问题标签 [elm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1215 浏览

elm - Elm Lift function

I am a newbie to the elm.

According to the document,

Can I have a way to do something like this?

Is it true that the only way to do is first use constant : a -> Signal a and then use lift2

Just curious, is there a way to quickly let Signal a -> a, if possible?

0 投票
1 回答
325 浏览

haskell - 无法安装 Haskell 单板库

我正在尝试安装 Elm,说明是安装 Haskell,然后

当我这样做时,cabal-install 安装会安装 text-1.2.0.0,它与 uniplate 需要的 text-1.1.0.0 冲突,因此 uniplate 及其依赖项无法安装。Text-1.1.0.0 已安装并存在,但被拒绝以支持 text-1.2.0.0,即使目标需要 text-1.1.0.0。

有没有办法坚持 cabal 使用 text-1.1.0.0?有没有办法让 text-1.1.0.0 和 text-1.2.0.0 共存?有没有办法说服 uniplate 它可以接受 text-1.2.0.0?或者一种让单板(或阴谋集团)相信版本 text-1.1.0.0 实际安装的方法?那还能用吗?

当我明确尝试安装文本版本 1.1.0.0 时,我被告知重新安装会破坏其他包。显然这是降级而不是共同安装。cabal 似乎没有允许我同时安装同一个库的两个版本的选项。

如果我卸载 Haskell 和所有库,然后重新安装 Elm(没有安装 cabal-install 所以我没有安装 text-1.2.0.0 所以没有冲突),我得到 100 左右行

我完全不知道如何解决这个问题,甚至不知道在哪里尝试。以前有没有人走过这条路,你有什么建议或指示吗?

谢谢你。

编辑 在沙箱中安装只会逐渐改变结果:text-1.1.0.0 不会与 text-1.1.0.0 冲突,但仍然无法加载(尽管已安装)并且仍然是未满足的依赖项。

blaze-builder 是第一个失败的,cannot satisfy -package-id text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383但前面提到的相同日志[_12] trying: text-1.1.0.0/installed-9bd... (dependency of Elm-0.13)没有明显的错误或抱怨。

cabal list显示已安装的 text-1.1.0.0 和 text-1.2.0.0。

单独安装 blaze-builder 看起来是一样的。依赖解析显示

一切看起来都不错,但后来,相同的日志

ghc命令行已经有-v标志并尝试重新运行从日志中复制的命令行,带有更多的-vs,给出错误“无法在 dist/dist-sandbox-ad0bcd57/package.conf 找到包数据库。到位”。

似乎不存在 package.conf.inplace。

进一步编辑

在 Elm 安装页面上是一个BuildFromSource.hs脚本的链接,该脚本也应该用于安装 Elm。在该脚本运行和失败的时间里,我设法安装了 leiningen、node、npm、grunt 和 Clojure。我现在在大约 20 分钟内安装 Clojurescript 的道路上走得更远,而不是在近一周内安装 Elm。

榆树看起来有趣,但玩起来太难了。

再次感谢所有试图提供帮助的人。

* 编辑 *

我终于明白了。

安装程序在http://elm-lang.org/Install.elm安装的每个可执行文件都会导致段错误。

同一页面上的“从源代码构建”选项不起作用,因为依赖关系要么相互交叉,要么一开始就无法直接进行。

http://new-www.haskell.org/downloads/osx上的 ghc需要比我更高版本的 Mac OS。(旧版本的链接不会误入歧途。)

解决方案(回想起来很明显)是 to port install haskell-platformand 。我确实必须运行其中一个安装程序两次,因为它找不到 hackage.haskell.org(这是一个“用户”错误吗?)但我的 hello-world.elm 现在可以编译了。port install hs-cabal-installcabal install Elm ...

再次感谢大家。

0 投票
1 回答
126 浏览

random - 如何比较榆树中的随机数

float : Signal a -> Signal Float用来生成随机数。

我想将此生成的数字与 a 进行比较Float,我该怎么做?

这是错误的,错误信息:

0 投票
1 回答
202 浏览

random - 如何使用随机数的地图功能

此代码来自http://elm-lang.org/edit/examples/Intermediate/Stamps.elm。我做了一个小改动,见下文。

使用地图功能时如何传递信号?

0 投票
1 回答
180 浏览

elm - 榆树画在列表上

我正在尝试绘制对象列表,但无法使其正常工作。第二个问题是如何使用 ELM 制作“for 循环”。

我有一个

我正试图让这个工作

特别是,拼贴画有很多东西需要绘制:

0 投票
2 回答
1386 浏览

elm - 在 Elm 中至少包含两个元素的列表上的模式匹配

在具有至少两个元素pos1和的列表上进行以下模式匹配有什么问题pos2

请注意,我没有发布正文,只是返回一个空列表以保持片段较小。

0 投票
1 回答
733 浏览

elm - 如何在 Elm 中构建库?

我正在整理一些 Elm 代码,我想知道如何执行以下操作:

假设我有以下文件结构

假设我已将 BMW 和 Mercedes 代码分成不同的文件,以保持我的代码小而独立,所以我更容易添加另一个文件,比如说Toyota.elm

现在,我希望 Project 文件夹中的任何文件都可以访问文件夹中的所有文件,Car而无需编写

理想情况下,我只想写一些类似的东西

这只是让我可以访问每个文件中的所有内容。

可能吗?如果是这样,最好的策略是什么?

0 投票
1 回答
207 浏览

types - 比较信号 int 和 int [Elm] 的类型错误

我想在选择时突出显示一个按钮(浅蓝色背景)。为此,我编写了以下代码:

当我沿着我的其余代码运行它时,我收到这个错误消息:

问题是 player.signal 是一个 Signal Int。如果我将其替换为正常数字,我的程序将正常工作。但是,我需要一个按钮在选择时变为浅蓝色,在选择另一个按钮时再次变为白色。有没有办法将信号转换为普通整数以进行比较?我已经尝试创建一个外部比较方法并将信号提升到该方法,但是这种方法的结果将是一个我无法使用的 Signal Bool。为了说明我做了什么:

更新

我试图将信号“更高”移动到调用函数,但问题仍然存在。我不妨展示所有的代码(它并不多,我应该首先这样做)。

我将首先解释我的最终目标是什么。游戏在开始屏幕 (beginState) 中开始。在此屏幕中,玩家可以自定义:
- 昵称(返回字符串的文本字段)
- 控件(wasd、箭头键、用户定义的任何方向键)
- 玩家数量

输入空格键后,游戏开始,这些参数不能再更改。这可以在startGame中看到。实际游戏的运作方式与本主题无关,但重要的是要知道我希望将开始屏幕的自定义选项转移到游戏机制中。因此,每个玩家的某些操作的输入键必须与控件文本字段中选择的字符一致。选择的玩家数量将决定在游戏中创建哪些对象。此游戏的 playState 目前已替换为 holder draw

关于问题:
我正在慢慢地了解到,我不能简单地通过调用来询问玩家的数量,players.signal因为我会得到一个 Signal Int 而不是 Int。这意味着我将无法调用,例如controls.signal,检索要放入的字符Keyboard.directions(因为我将得到一个信号字符而不是字符)。问题基本上是,我如何像使用其他编程语言中的变量一样存储和传递来自信号的信息?

我在这段代码上工作得越多,我就越意识到我不明白信号是如何工作的。在您的示例(Apanatshka)中,我看到您将信号提升到 playerSelection,它需要一个 Int 作为参数而不是 Signal Int。当我尝试应用它时(请参阅此更新部分中的代码),我收到以下错误:

我大致了解可能出了什么问题。一个函数正在发送两个信号,它只需要一个信号。老实说,我更愿意看到信号传播到更相关的位置,比如在 beginState 中:

但是随后 toForm 得到了一个 Signal Element 参数而不是 Element,这又带来了问题。从技术上讲,我可以将信号一直放在 main 中,但我对此感觉非常糟糕,因为players.signal一旦游戏开始并且信号作为 Int 参数传递就不再需要它了。

我希望我很清楚我想要完成什么。并快速总结我的问题:
- 如果不将players.signal我的所有信号都支撑到主信号,我的代码在哪里适合?
- 我将如何存储和传递来自信号的信息?

0 投票
1 回答
116 浏览

elm - 理解 elm 中的代码片段(更新类型)

下面的代码是什么意思?

(代码取自http://elm-lang.org/edit/examples/Intermediate/Form.elm第 36 行)

声明一个新类型Update?那些竖线是什么意思?

0 投票
6 回答
13467 浏览

elm - elm 中的 `<<` 运算符是什么意思?

下面的代码取自Elm Form Example第 122 行,<<运算符是什么意思?

在Elm 语法参考中找不到它。

这是否意味着,当字段更改时,而不是将其发送contentupdateChan,发送toUpdateupdateChan