可以用 Elm 编写并行代码吗? Elm 是纯函数式的,因此不需要锁定。当然,我可以使用 Javascript FFI,在这里生成工人并自己完成。但是,我想要更用户友好的“方式”来做到这一点。
简短回答
不,目前还没有。但下一个版本(0.15)将有新的方法来处理 Elm 内部的效果,因此您将需要更少地使用端口 + JavaScript 代码。因此,在下一个版本中很可能有一种方法可以在 Elm 中生成工人。
更多背景
如果您喜欢冒险,请尝试阅读在 Elm 上发表论文 http://www.elm-lang.org/papers/concurrent-frp.pdf(或者更长的原创论文 http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html),这表明 Elm 使用的 FRP 原始风格非常适合细粒度并发。还有一个async
构造可能会使程序的一部分以更粗粒度的方式单独运行。这可能是对操作系统级线程(如 JS Webworkers)和并行性的支持。
曾经有过早期对 Webworkers 的实验 https://www.youtube.com/watch?v=PBDJYkSwVFs。社区内肯定对并发感兴趣,但 JavaScript 并没有提供任何很棒的并发选项。
有关阅读论文上的提示,请参阅此处我的帖子来自 elm-discuss 邮件列表 https://groups.google.com/d/msg/elm-discuss/ol1xk8guF4A/PLtst1G6bEEJ:
如果您想了解有关信号和选择异步的更多信息,我建议您尝试 Evan 在 Elm 上的 PLDI 论文。从简介 (1) 一直阅读到构建 GUI (4)。您可以跳过类型系统(3.2)和功能评估(3.3.1),这可能会节省您一些时间。构建 GUI 中和之后的大部分内容 (4) 可能是您已经知道的内容。图 8 可能是对 async 关键字的作用的最好概述(请注意,async 关键字在当前的 Elm 编译器中尚未实现)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)