可以在Elm中编写并行代码吗?榆木是纯功能的,因此不需要锁定。当然,我可以使用Javascript FFI,在这里产生工作并自己完成。但是,我想要更加用户友好的“方式”。
答案 0 :(得分:3)
不,不是。但是下一个版本(0.15)将有新的方法来处理Elm中的效果,因此您需要使用ports + JavaScript代码。因此,在下一个版本中可能有一种方法可以在Elm中生成工作者。
如果您喜欢冒险,请尝试阅读published paper on Elm(或更长original thesis),这表明Elm使用的原始FRP风格非常适合细粒度并发。还有一个async
构造,它可以使程序的一部分以更粗粒度的方式单独运行。这可能是OS级线程(如JS Webworkers)和并行性的支持。
有earlier experiments with Webworkers。在社区中肯定对并发感兴趣,但JavaScript并没有提供(m)任何可靠的并发选项。
有关阅读本文的提示,请参阅post of mine from the elm-discuss mailing list:
如果您想了解更多关于信号和选择异步的信息,我建议您尝试使用Evan的PLDI文章来榆树。阅读介绍(1)直到构建GUI(4)。您可以跳过类型系统(3.2)和功能评估(3.3.1),这可以节省您一些时间。构建GUI(4)之内和之后的大多数可能是你已经知道的东西。图8可能是async关键字的最佳概述(请注意,async关键字未在当前的Elm编译器中实现)。