如何在Elm中压缩形状奇怪的列表?

我想在我的Elm程序中结合两种数据结构。它们的类型是List(a,List b)和List c。这是在模型中存储数据的最简单方法,但我想编写一个函数,在显示数据之前将其转换为视图模型 type alias Model1 a b = List (a, List b) type alias Model2 c = List c type alias ViewModel a b c = List (a, List (b, c)) toViewModel : Model1 -> Model2 -

从Elm中的记录列表中返回单个记录

我试图在满足条件时从记录列表中返回一条记录。 现在,当条件为false时,我返回一个带有空字段的记录 这样行吗? 有更好的办法吗 xs = [ { name = "Mike", id = 1 } , { name = "Paul", id = 2 } , { name = "Susan", id = 3 } ] getNth id xs = let x = List.filter (\i -> i.id =

Elm 如何知道滚动条是否位于元素的底部

有没有办法知道滚动条是否位于Elm中元素的底部?我正在使用Dom.Scroll.toBottom在添加列表项时滚动到列表的底部。如果不去管它,效果会很好。但是如果你手动向上滚动一点,我不想再自动向下滚动到底部(除非你再次手动滚动到底部)。否则,您将无法查看前面的列表项。我可以使用以下代码获得clientHeight、scrollHeight和scrollTop属性。要知道卷轴是否位于元素的底部,这些是必需的。代码的其余部分仅在scroll已位于底部时实现自动滚动的机制: 类型别名模型= {消息:

在Elm中立即启动计时器

我希望下面的代码在打开和关闭计时器时异步增加计数。但它总是同步工作(增量为2) 如何使其异步 编辑:可能是由于我的英语能力不足,这个问题似乎经常被误解。我希望实现的行为与我的答案完全相同。关键是,两个计时器应该通过切换分别增加计数 解决这个问题的方法如下,但这当然是不可取的。我想尽可能多地使用其他解决方案。请为我提供可靠的方法 import Html exposing (program, div, button, text) import Html.Events exposing (onClic

在Elm中何时使用类型别名与单值联合类型

我一直在阅读,我看到了很多类似的事情: type Username = Username String type alias Username = String 我不确定使用这样的东西是否有意义,单值联合类型,而不是像这样的类型别名: type Username = Username String type alias Username = String 什么时候使用单值联合类型与只使用类型别名是合适的?对于什么时候合适没有硬性规定,但我倾向于遵循一些经验

ELM应用程序视图中的样式化组件出错

无法理解如何在视图模块中使用导入的样式化组件。以下是组件本身: module Logo exposing (logo) import Css exposing (..) import Html import Html.Styled exposing (..) import Html.Styled.Attributes exposing (css, src) theme : { secondary : Color, primary : Color } theme = { primary

无框架Elm中的模态分析

我是ELM新手,我想创建一个不使用任何库(如Bootstrap或ELM-UI)的模式。我在网上找到了这个简单的例子,它也使用JSON解码。有没有可能在没有任何框架/库和JSON解码的情况下让模态工作?如何修改代码以获得工作模式 module Main exposing (main) import Browser import Html exposing (Html, Attribute, button, div, span, text) import Html.Events exposing

elm中的本地存储或其他数据持久性

我刚刚开始研究Elm,并打算用它构建一个简单的web应用程序。我的想法是在浏览器中保存一些用户数据 有没有一种直接使用Elm处理数据持久性的方法?例如,在浏览器会话中,甚至在本地存储中?或者我应该使用端口来使用JavaScript吗?您可以看看。它使在本地存储中存储数据成为可能。我建议使用本地存储。在最新的elm中没有对它的官方支持(此时它是0.17),但是您可以通过端口简单地实现它。这是一个通过elm 0.17的端口使用localStorage的工作示例(基于官方文档中的示例) port mo

如何消除elm信号的影响?

我正在使用start app塑造我的应用程序Html.Events支持使用自定义Signal.message创建自定义事件。但是如何发送该消息被抽象在Html库后面。还有一个名为的库,它实现了去Bouncing() SearchBar.elm: module PhotosApp.SearchBar (view) where import Html exposing (input, div, button, text, Html) import Html.Events exposing (on,

Elm 为什么可以';我不能过滤订阅吗?

为什么不公开任何过滤器函数?如果有一个类似于filterMap:(a->Maybe msg)->Sub a->Sub msg的函数来监听某些按键上的事件,而不是其他按键上的事件,那将非常方便 这个功能可以用另一种方式实现吗?这是一个好主意吗?虽然我不能说它的缺失(filterMap似乎很合理),但您可以在更新函数之前进行筛选/映射,并在筛选返回Nothing时映射到NoOp消息: 导入 你的过滤器功能:Msg->Maybe Msg yourFilterFunction=。。。 主要= Html.

如何导航到Elm应用程序中的其他页面?

如何导航到Elm应用程序中的其他页面 具体来说,我正在尝试从主页导航到贡献者页面 “参与者”页面位于“我的域”文件夹下 文件结构如下: - Home.elm - Domain - Contributor.elm 我想我可以这样做: a [href "Domain/Contributor.elm"] [text "click me!"] 或者这个: a [href "Domain/Contributor.html"] [text "click me!"] 但是,这两条路径都不起作用 注:

Elm 榆树型混淆

我在Elm开始了我的第一个简单的web应用程序。我的大部分代码目前都是从中改编的。我正在使用一个API,该API将在响应头中为我提供一个authToken。我有一个AuthToken类型,应该表示该令牌。从标头中取出值并将其转换为错误String或AuthToken的结果会导致问题。我希望我可以说我正在返回一个AuthToken,返回一个字符串,这会很好,因为我的AuthToken现在只是字符串。很明显,我对榆树的类型有些不了解 以下是AuthToken的定义: type AuthToken

如果返回JSON的根,Elm邮政编码示例会是什么样子?

您好,我正在努力使用Elm获取JSON的根。 所有示例都显示了对嵌套[{info here}]的解码 如果在Elm站点上找到的邮政编码示例是JSON的根,它会是什么样子?{“邮政编码”:“我想要这个”} http->解码Json(一个字符串“post code”)->到主输出的步骤是什么 谢谢找到这个花了一段时间。 但是它看起来像这样你可能已经拥有了它,但你需要它 http.get ("post code" := string) url |> Task.maybe |>

如何在Elm中用采样合并两个信号

我尝试合并两个信号。一个是Mouse.clicks,另一个是Keyboard.space 单击时,我应该从Mouse.position获得一个信号(Int,Int)作为返回值 在太空中,我应该得到一些不同的东西,这样我可以识别不同的信号被触发 我的想法是: type Event=单击|空格 合并信号:信号事件 合并信号= 让 clickSignal=映射(\event->Click)鼠标。单击 timeoutSignal=map(\event->Space)Keyboard.Space 在里

ELM:在div第二个参数中嵌入(HTML列表)时出错

给定一个字符串列表,我想创建一个HTML div列表,以便在视图中插入它: 我想知道函数签名应该如下所示: display : List String -> List Html div 以及职能机构: display model = case model of [] -> [] (x::xs) -> div [][ text x] :: display xs 当按照以下步骤将上述函数嵌入视图时(我知道div函数将Html列表作为第二个参数div

Elm中的函数参数重排序

我正在寻找类型为(a->b->c->d)->c->a->b->d的函数。换句话说,一个函数可以部分地将第三个参数应用于一个函数 有没有一个图书馆有这样的功能?制作一个或向其中一个elm社区库(可能是elm function extra)中添加这样的函数对我有用吗?我不相信存在具有该函数的库,但定义它很简单: f:(a->b->c->d)->c->a->b->d f fn c a b= fn a b c 关于它是否属于社区图书馆的问题,最好在社区图书馆中进行讨论 我在Hoogle上找不到等效的H

Elm “如何安装?”;“榆树之光”;在窗户上?

在LightTable编辑器中,它看起来是一个很好的elm插件,但我无法使它在Windows上正常工作。当我尝试执行此操作时,会出现以下错误:Path必须是字符串。接收到空值 请帮助…避免在通往elm平台的道路上出现空格 在Windows命令提示符中键入echo%path%,以检查Elm路径 如有必要,请在另一个文件夹中卸载并重新安装elm 避免在通往LightTable的道路上出现空格 如有必要,请移动LightTable文件夹 在新位置卸载并重新安装elm插件 安装elm oracl

Elm 如何链接Cmd Msgs

我有一个需要按顺序运行的Cmd Msgs列表。我目前使用的是Cmd.batch list,但它们似乎都是同时运行的,因此应该稍后运行的命令不知道早期命令应该引入的模型的任何更改 我正在研究任务。然后,但不确定这是否是正确的方向,或者如何从任务中生成Cmd Msg。我是否走对了道路,或者有更好的方法来实现这一点,也许仍然使用Cmd.batch 我目前有两个函数receive:String->Model->Cmd Msg和processMsg:String->Model->Cmd Msg: rece

Elm 0.16到0.18 Http.get?

我一直在尝试将Elm 0.16代码转换为0.18。然而,我似乎无法获得Http.get,我必须工作 旧代码是: fetch : Decoder a -> String -> (Result Http.Error a -> b) -> Effects b --Effects became Cmd in 0.17 fetch decoder url action = Http.get decoder url |> Task.toResult |&

Elm:如何记录函数体?

如果我记录一个函数: Debug.log "List.foldl" (toString List.foldl) <function> : a -> a Debug.log“List.foldl”(toString List.foldl) :a->a 我得到了它的函数签名。如何获取函数体?接受两个参数:字符串和任意变量。这两个参数都将被打印出来,并且第一个参数应该被用作一个简单的描述,说明您正在向日志发送什么 在您的情况下,可能是: Debug.log "List.foldl

更新Elm中的记录(旧记录发生了什么?)

好的,首先请看下面的帖子: 我更好奇的是,这实际上是怎么可能的,因为这使得记录实际上是一个变量,函数编程试图避免的事情 我的旧帐单怎么了?有人基本上删除了我的x=4,并制作了一个新的x=boo\u far?函数式编程避免了变异。在Elm中,记录不是变异的,而是复制的 即使说它们是复制品也有点失实。它们不是逐字节完全克隆的。这将是非常低效的。它们的内部结构更像图形,允许高效的基于指针的操作,在执行复制到新记录的操作时,这些操作可以有效地扩展底层结构,而不会改变现有的节点和边 从概念上讲,这样想可

尝试在同一节点中的两个嵌入式Elm应用程序之间切换失败

我正在尝试根据用户输入在Elm应用程序之间动态切换 这两个应用程序都通过elm make在js文件中传输(例如:Foo.js暴露模块Foo和Bar.js暴露模块Bar) 两个按钮运行通常的“Elm.[Foo | Bar].init(节点:document.querySelector('main')”,因此理论上我可以在呈现两个应用程序之间切换 需要明确的是,这两个应用程序应该交替接管该元素 当我第一次点击其中一个按钮时,应用程序会正确呈现,但第二次点击会产生以下错误 Error: What

使用ELM检测上的IE浏览器兼容模式

我有一个在Elm中运行的应用程序。 在“IE兼容”模式下加载应用程序之前,我需要向用户显示一些警报消息,因为我不打算支持,只针对IE兼容模式 用JavaScript我可以做到 navigator.userAgent.indexOf('compatible') > -1 ? true : false 但是在ELm-it-self中有没有一种方法可以做到这一点,就像Main.init中的第一件事一样 我曾尝试使用Elm端口,但应用程序本身在到达端口之前失败,这就是为什么在任何Elm代码运行之

Elm 计算项目的实例数

例如输入 ["a", "b", "b", "c", "a"] 将导致输出 [("a", 2), ("b", 2), ("c", 1)] 在elm中,我真的想不出一种功能性的方法来实现这一点。如果您可以使用,那么您可以映射该功能的结果以满足您的需要: import List.Extra List.map (\(x, y) -> (

如何在Elm中垂直对齐三个窗体?

1) 我真的不知道元素和表单是为了什么目的而不同的类。可能会导致以下问题 (二) Mymain函数将所有信号映射到一个Assembly函数,该函数在每次更新时组装视图 assemble: Float -> Float -> Element assemble screen_w screen_h = [ background screen_w screen_h, header screen_w screen_h, info scre

“some_function”结构在Elm中是什么意思?

我在查看elm表单包文档时发现了以下代码: 字段“myfield”(int`and`minInt 10) 这些引语是什么意思?这是应用函数的另一种方式吗?这是一种将任何函数用作中缀的方式,如3+5 但是:它已在elm 0.18中删除:

防止代码javascript部分中的锚标记刷新Elm单页应用程序中的页面?

我试图在单页应用程序中实现无散列URL(如/somePage) 我现在正在使用onPreventDefaultClickfrom,以防止锚链接刷新代码中我的elm部分中单击时的页面 问题是,我在页面上嵌入了一个javascript编辑器。而且,在那里也会有数量不可预测的链接(链接到应用程序上具有不同URL的不同功能)。如何防止他们刷新页面。但也允许他们运行命令并在之后更改url 这对于像/#/somePage这样的散列URL来说很容易。在当前的实现中,我只是在代码的JS/editor部分的锚定标

Elm 获取自己的文件名

Elm版本:0.19.1 有没有一种方法可以使用项目元数据UTIL或其他工具/解决方案在Elm项目中进行一些元编程?简单的东西,比如获取自己的文件名,获取自己的文件目录,然后在我的elm应用程序中使用 我想要的是这样的: moduleName : String moduleName = MetaData.moduleName 从根本上说,Elm不提供对此类信息的访问,因为没有反射API,因此在Elm中没有一种好方法可以完全做到这一点。您可以尝试使用Ports和JS,但如果您谈论的是Elm源代码

Elm中的列表拆分

编写一个函数,将一个列表拆分为两个列表。第一部分的长度由调用方指定。 我是Elm的新手,所以我不确定我的推理是否正确。我认为我需要转换数组中的输入列表,以便能够根据提供的输入编号对其进行切片。我在语法方面也有点困难。以下是我目前的代码: listSplit: List a -> Int -> List(List a) listSplit inputList nr = let myArray = Array.fromList inputList in Array.slice

为什么Debug.log在Elm中按相反顺序打印?

考虑一下这个计划: import Graphics.Element exposing (..) import Debug main : Element main = let one = Debug.log "one" 1 two = Debug.log "two" 2 three = Debug.log "three" 3 in show "Hello" 它将以下内容打印到浏览器控制台: three: 3 two: 2 one: 1 为什么顺序颠倒

需要Elm语法帮助

你能给我解释一下Elm next语句的意思吗 (=>) = (,) 我在中缀符号的例子中找到了它。实际上,这定义了一个函数 (=>) = \a b -> (a,b) 然后使用中缀而不使用括号,因此 a => b == (a,b) 嗨,事实上,我是通过玩这个例子来了解自己的。但无论如何,谢谢你的回答,这是非常有帮助的!那你能把问题标上句号吗

Elm 为什么写“HTMLMSG”而不是“HTMLA”是习惯用法?

我是榆树的初学者。这是一个关于风格的问题,而不是某样东西是如何运作的 例如,我们有 viewValidation:Model->Html msg 我知道这样做是为了viewValidation model可以与Html Msg类型的值共存于同一列表中。但是,既然msg这里只是一个类型变量,为什么不使用更传统的a msg打算传达哪些额外信息?Elm体系结构鼓励一致地命名类型,如Model和msg,以传达其含义。使用小写字母msg只会让我们更清楚地了解其意图 它很可能被命名为a,但可以说它并没有传达

如何在Elm中检测加载图像失败

如何在Elm中检测图像加载失败 我使用img[src”/path/to/image“]并想知道映像是否加载失败。 在plan old JavaScript中,我会注册到img事件的onError,但在Elm中我看不到onError。您可以用来捕获图像加载错误 您需要一个Msg值来指示映像失败。这里我将其称为ImageError: img[src”/path/to/image,在“error”(Json.Decode.succeed-ImageError)上 在这种情况下,Json.Decode

Elm中的泛型模式匹配

我正在尝试构建一个通用映射函数,该函数将从联合类型中提取一个可能的内部类型,对内部值应用一个转换,并将其映射回外部类型 问题是,我需要一种方法来区分外部类型的特定值是否有内部类型 如果下面的代码真的编译了,这对我来说是可行的,但是Elm不允许模式匹配中使用常量。(第4行的构造函数编译失败) 有没有其他方法可以做到这一点 map : (inner -> outer) -> (inner -> inner) -> outer -> outer map construct

Elm为我指定一个整数

我想看看给定列表的长度是否等于某个数字。然而,=期望两个数字不是Int,所以即使我键入(==)1类型仍然是数字->Bool,所以最后当我输入长度的结果时,我得到编译错误: --类型不匹配-------------------------------------------REPL 此函数无法处理通过(|>)管道发送的参数: 4| List.length |> ((==) 1) ^^^^^^ 理由是: List a -> Int 但是(

如何强制Elm重用DOM元素?

我想使用Elm制作一个web应用程序,该应用程序将包含一些视频元素,具有动态布局,可以根据浏览器的宽度和高度进行更改。当我尝试这样做时,很明显Elm正在为视频生成新的元素,但这不起作用,因为视频元素具有需要保留的状态 为了简单起见,我用计数器而不是视频来演示这个问题。我试图解决Html.lazy和Keyed.node的问题,但问题仍然存在 这里的代码也可以从中克隆 src/Main.elm: port module Main exposing (..) import Browser impor

从两个posix时间戳在Elm中创建倒计时

基本上,我试图从两个UNIX时间戳的差值创建一个倒计时 我的目标是创建这样的倒计时:130:04:23,其中130是小时,04是分钟,23是两个日期之间的秒 toCountDown : Time.Posix -> Time.Posix -> String toCountDown now end = let differenceMillis = Time.posixToMillis end - Time.posixToMillis now

Elm Make启动Windows脚本主机并给出错误消息?

我在Elm中玩,每当我使用Elm make时,我都会从Windows脚本主机收到一个错误: 该错误表示build elm.js文件中存在错误。当我看到给定的一行时,它如下所示: return { keys: keys, // A hash of key name to index free: free, // An array of unkeyed item indices } // line 10547 所以我猜它在抱怨10546行不必要的,:免费:免费,

如何在elm中获取case语句中字符串的值

考虑以下几点。为什么它不起作用。我怎样才能让它工作呢 输入字符串 =字符串 |Int getInt:IntOrString->String getInt-intOrString= 关于……的情况 字符串-> 入串 Int-> 串入串 您对IntOrString类型的声明似乎表明您想要一个可以包含整数或字符串的类型。然而,这不是你所创造的。我建议阅读Elm指南中的 声明联合类型时,必须创建构造函数。在您的示例中,您实际上创建了一个具有两个构造函数的类型,这两个构造函数都不包含参数,因此尽管您将它们

Elm 应用程序型号何时可以更改?

我想知道应用程序的型号何时会改变 具体来说,像这样的代码是否保证是正确的 onClick我被告知,从0.18开始: 视图通过requestanimationframe异步渲染,因此,不,它不安全 而且: 在0.19中,html事件将触发同步重新渲染器,因此这不会成为问题 最后: Requestanimationframe以60fps的速度运行,因此使用过时模型发送事件的窗口非常小 i、 e.最多16毫秒,假设您的视图可以在单个帧内渲染(如果不能,这是另一个问题) 因此,在这种情况下,我建议尽可能

Elm 使用Random.Generate Int的情况

我是埃尔姆的新手。Elm版本为0.19。我正在尝试使用Ranndom.int来选择船舶类型,但不知道如何操作。 我应该如何处理函数numToShip?改变类型 这是我的密码 type ShipType = Battleship | Cruiser | Destroyer | Submarine numToShip : Int -> ShipType numToShip num = case num of 0 -> Destr

创建elm应用程序:如何通过反向代理运行elm应用程序启动

我是新创建elm应用程序的 我需要通过路由到的反向代理运行elm app start 但是,这需要链接(例如到css和js)引用/myprefix/* 对于elm应用程序构建,这可以通过 PUBLIC\u URL=myprefix elm应用程序构建 但是,对于startPUBLIC\u URL=myprefix elm app start这不起作用,即链接引用/改为指向/myprefix 任何帮助都将不胜感激

将参数翻转到Elm函数调用

我正在尝试修改以使其呈现不同颜色的多个间隔: import Color exposing (red, blue, yellow) import Graphics.Element exposing (Element, color, spacer, flow, right) colors = [ yellow, red, blue ] presentColors : List Element presentColors = List.map (color ??? (spacer 30 30))

是否可以不在Elm中的每个计时器滴答声中重新创建整个模型?

例如,我需要在页面上设置计时器。所以我可以每100毫秒做一次动作 type Action = Tick Time 我的模型中有字段时间。模型可能很大,但由于时间场的原因,我需要每100毫秒重新创建一次模型和整个视图。我认为,从绩效角度来看,这将是无效的 还有其他方法吗?或者我不应该担心这种事情吗?不一定每次都会重新创建整个视图。Elm使用了一个和diff来只更改实际DOM的最小值。如果你的视图的很大一部分实际上每100毫秒就改变一次,那么这显然会引起问题,但我猜你只是每100毫秒做一次较小的调

Elm中的单元测试任务

我正在构建一个应用程序,它将使用elm架构中elm定义的一些任务 有没有一种方法可以独立地对这些任务进行单元测试,而不必测试整个应用程序 我已经在使用elm community/elm test包对函数进行单元测试,但是现在如何进行测试任务呢。如何执行这些任务和等待的响应,然后将其与某个预期值进行比较?您可以编写一个简单的程序,遍历命令列表(包装任务)和预期结果消息,根据预期内容检查实际收到的消息。init函数发出列表中的第一个命令,而update函数验证收到的下一条消息,然后发出下一次测试的命

Elm 将记录分解为自定义变量名

考虑这一功能: mix : Color -> Color -> Color mix c1 c2 = let { red, green, blue, alpha } = toRgb c1 { red, green, blue, alpha } = toRgb c2 in ... 上述方法不起作用,因为它引入了重复的变量名是否可以将上述值分解为r1、r2、g1、g2等? 为澄清起见,toRgb有以下签名: toRgb :

如何在ELM表单中使用Html.form?

我想制作一个HTML表单,它实际上使用ELM中的[form]标记。在线示例中没有一个这样做——它们只是将[input]标记放在[div]中而不是[form]中 当我尝试将我的Elm应用程序切换到[form]时,我的[input type=sumbit]标记似乎不会调用Elm。提交尝试离开页面并向我的url添加“?” 有没有关于如何做到这一点的提示 原因:我想成为一个使用[form]的用户,这样我就可以在一些[input]字段上使用“required”属性。这只是我验证的一部分,但我喜欢“必需”标

在Elm中,如何在标记的联合类型中使用可比较类型?

我可以这样定义标记的联合类型: type Msg = Sort (Product -> Float) 但我不能这样定义: type Msg = Sort (Product -> comparable) 错误显示: 类型Msg必须声明其使用类型变量comparable 但是Compariable是一个预定义的类型变量,对吗 如何修复此问题?您得到的错误是,comparable是未绑定的变量类型。您需要在右侧完全指定它(例如,Product->Int),或者在左侧指定您希望它

Elm:如何将Html-FooMsg转换为Html-Msg

我是埃尔姆的新手。我有一个网站有两个页面:主页和注册 Home有自己的视图,Signup有自己的视图,但它们都返回Html Msg。我想更改它,以便Home返回HTMLHomeMsg,而Signup返回HTMLSignupMsg 编写这些视图函数当然很容易,但我认为我的顶级视图函数需要将结果转换为Html Msg 这是Msg类型 type Msg = Home HomeMsg | Signup SignupMsg | OnLocationChange Location 我想我需要

Elm在HTML属性中放置打开的文本

我一直在拼命寻找一个css框架来与ELM很好地合作。我发现了一个名为UIKit的工具,它声称可以监视DOM并自动初始化,等等。但是,我注意到在html标记中,有类似于ukclose的文本显示在这里。有没有办法用Elm来渲染这个?文本函数无法工作,因为它返回了错误的类型 <button type="button" uk-close></button> <a href="" uk-close></a> 除此之外,是否有人知道一个框架可以顺利地与

  1    2   3   4   5   6  ... 下一页 最后一页 共 12 页