4

可以在 Elm 中编写并行代码吗?Elm 是纯函数式的,因此不需要锁定。当然,我可以使用 Javascript FFI,在这里派生工人并自己做。但是,我想要更多用户友好的“方式”来做到这一点。

4

1 回答 1

3

简短的回答

不,目前没有。但是下一个版本 (0.15) 版本将有新的方法来处理 Elm 内部的效果,因此您将需要更少地使用端口 + JavaScript 代码。所以很可能有一种方法可以在下一个版本中在 Elm 中生成工人。

更多背景

如果您喜欢冒险,请尝试阅读有关 Elm 的已发表论文(或更长的原始论文),这表明 Elm 使用的 FRP 的原始风格非常适合细粒度并发。还有一个async构造可以潜在地使程序的一部分以更粗粒度的方式单独运行。这可能是操作系统级线程(如 JS Webworkers)和并行性的支持。

早先已经对 Webworkers 进行了实验。社区中肯定有对并发的兴趣,但是 JavaScript 并没有提供(m)任何好的并发选项。

有关阅读本文的提示,这是我在 elm-discuss 邮件列表中的帖子

如果您想了解有关信号和选择异步的更多信息,我建议您尝试 Evan 在 Elm 上的 PLDI 论文。从介绍 (1) 到构建 GUI (4)。您可以跳过类型系统 (3.2) 和功能评估 (3.3.1),这可能会为您节省一些时间。大多数在构建 GUI 中和之后的内容 (4) 可能是您已经知道的内容。图 8 可能是对 async 关键字作用的最佳概述(请注意,当前 Elm 编译器中未实现 async 关键字)。

于 2015-03-21T18:34:09.057 回答