【问题标题】:Is there parallelism in Elm?Elm 有并行性吗?
【发布时间】:2015-03-21 11:03:58
【问题描述】:

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

【问题讨论】:

  • 简短的回答是否定的。我可以给你写一个更长、更真实的答案,因为肯定还有更多要讲的。但我想知道,为什么需要并行性?
  • 一些人工智能计算。

标签: parallel-processing elm


【解决方案1】:

简答

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

更多背景

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

已经有earlier experiments with Webworkers。社区中肯定有对并发的兴趣,但 JavaScript 并没有提供(m)任何好的并发选项。

如需阅读本文的提示,这里是post of mine from the elm-discuss mailing list

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多