Elm 中有并行性吗?

2024-03-20

可以用 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(使用前将#替换为@)

Elm 中有并行性吗? 的相关文章

  • 在 0.19 中将自定义 HTML 与 elmreactor 或其他开发服务器结合使用

    As 这个答案 https stackoverflow com a 41366859 7943564显示可以在 Elm 0 18 中运行elm reactor如果此代码段包含在 HTML 文件中 则使用自定义 HTML 文件 然而 在 0
  • 使用 Fortran (CLFORTRAN) 在 OpenCL 中将两个选项作为参数传递

    当我的主机程序采用 C 语言时 我可以传递两个选项作为 OpenCL 函数的参数 例如 我可以通过两个 标志到clCreateBuffer像这样的函数 clCreateBuffer context CL MEM READ ONLY CL M
  • 寻找 CUDA 中的最大值

    我正在尝试在 CUDA 中编写代码来查找最大值 对于给定的一组数字 假设您有 20 个数字 并且内核在 2 个块 每块 5 个线程 上运行 现在假设 10 个线程同时比较前 10 个值 并且thread 2找到最大值 因此线程 2 正在更新
  • Haskell 中的简单合并排序并行化没有加速

    注 这篇文章于2011 06 10完全重写 感谢彼得帮助我 另外 如果我不接受一个答案 请不要生气 因为这个问题似乎是相当开放式的 但是 如果你解决了它 当然你会得到复选标记 另一位用户发布了有关并行化合并排序的问题 我以为我会写一个简单的
  • 是否可以使用多处理对一个 h5py 文件进行并行读取?

    我正在尝试加快从 h5py 数据集文件中读取块 将它们加载到 RAM 内存中 的过程 现在我尝试通过多处理库来做到这一点 pool mp Pool NUM PROCESSES gen pool imap loader indices 加载器
  • R 中 foreach() 内的 try() 问题

    我正在尝试使用try 函数来处理并行 for 循环中发生的错误 results lt foreach i 1 2 errorhandling remove dopar res lt try myfun i TRUE with myfun l
  • mpi.h:使用未定义的类型?

    我正在尝试将 OpenMPI 的 mpi h 的重要部分翻译为 D 编程语言 以便我可以从 D 调用它 HTOD 根本不起作用 我无法理解以下代码段 typedef struct ompi communicator t MPI Comm O
  • 如何在光线平行且不使用光线模式的情况下运行函数?

    After sudo pip3 install ray 我创建了一个函数foo 在射线装饰器中定义 import ray ray init ray remote def foo x print x 我希望能够使用foo并行和常规模式 忽略装
  • 并行处理 vec:如何安全地进行,或者不使用不稳定的功能?

    我有一个巨大的向量 我希望能够并行加载 操作 例如在一个线程中加载前十万个索引 然后在另一个线程中加载下一个索引 依此类推 由于这将是代码中非常热门的部分 因此我提出了以下概念验证不安全代码来在不使用 Arcs 和互斥体的情况下执行此操作
  • Random 并行生成数字 1 的次数超过 90% [重复]

    这个问题在这里已经有答案了 考虑以下程序 public class Program private static Random rnd new Random private static readonly int ITERATIONS 50
  • 垂直和水平平行度

    最近在并行领域工作 我了解到有两个术语 垂直并行 和 水平并行 有人说openmp 共享内存并行 是垂直并行 而mpi 分布式内存并行 是水平并行 为什么这些术语这么称呼 我不明白原因 这么称呼它们只是术语吗 这些术语似乎没有被广泛使用 也
  • ElasticSearch 多滚动 Java API

    我想从索引中获取所有数据 由于项目数量对于内存来说太大 我使用滚动 很好的功能 client prepareSearch index setTypes myType setSearchType SearchType SCAN setScro
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • MSBuild 未使用所有核心进行构建

    我有一个使用 Visual Studios 2008 配置的项目 当我打开 IDE 并点击构建时 系统上的所有核心都用于构建该项目 但是 当我尝试从命令行构建时 仅使用 1 个核心 这是我正在运行的命令 C Windows Microsof
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 使用 TestNG 运行并行测试时捕获 WebDriver 屏幕截图

    我目前正在通过分别重写 TestListenerAdapter 方法 onTestFailure 和 onTestSuccess 来捕获 TestNG 中失败和成功的屏幕截图 为此 您需要指定要截取屏幕截图的驱动程序 我的问题 在方法级别并
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 在 C# 中创建加密随机数的最快、线程安全的方法?

    请注意 在多个线程上并行生成随机数时 加密随机数生成器不是线程安全的 使用的发电机是RNGCryptoServiceProvider它似乎重复了很长一段随机位 128 位 重现此情况的代码如下所示 缺乏使用锁来保护访问RNGCryptoSe
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数

随机推荐

  • .toLocaleString('fr-FR') 不显示空格数量,但在控制台中工作

    我使用 PHP 显示来自服务器的一些价格和数字 使用函数以法语进行格式化 然后我想使用Jquery在客户端做一些计算 我使用 toLocaleString fr FR 来格式化要显示的结果 它可以在控制台中运行 但不能在 DOM 中运行 这
  • 如何重用一些“Eclipse IDE 插件”创建 Eclipse RCP 应用程序?

    如何创建一个 RCP 应用程序 它看起来与 Eclipse IDE 完全相同 具有所有菜单 视图 对话框 这是一个例子 http richclientplatform blogspot com 2007 12 oil and gas ind
  • 显示内 100% 高度的 div:table-cell div

    我试图将 100 高度的 div 放入 display table cell div 中 但它似乎在 IE 中不起作用 IE 有什么解决办法吗 这是我的代码 div style display table row div style dis
  • 在“视图”中使用 ng-init 的替代方案?

    我正在尝试为我的应用程序创建一个 喜欢 功能 我希望能够将动态生成的数字的值设置为 喜欢计数 问题出在使用 ng init 因为文档说这是一个糟糕的方法 如何在 控制器 而不是 视图 中设置值 这是我到目前为止所拥有的
  • 使用触发器将源代码从云构建发布到存储桶时出错

    我正在尝试通过云构建触发器将 html 代码从一个云源存储库发布到 gcp 中的公共存储桶 但是 每次推送到主分支时 我都会在构建中收到以下错误 generic invalid argument generic invalid argume
  • iOS 音量控制的最佳实践?

    硬件音量控制 我试图了解对于大多数静音但偶尔发出声音的应用程序的最佳实践是什么 此类应用程序可以利用 iOS 设备上的侧面音量控制 并避免需要在 NSVolume 控件小部件中进行设计 我认为这不如硬件侧面音量控制那么方便 该方法适用于 M
  • Ninject InRequestScope 缺失

    有几个关于 ninject 最新版本 2 2 1 4 的问题 正在尝试绑定 Linq2sqlDataContext到具体实施InRequestScope 在类库项目中 Bind
  • 在动态控件的 GridView 中找不到控件

    我有一个网格视图 我在运行时将文本框添加到每个单元格 但是 我似乎无法使用访问这些控件findcontrol 以下是我将文本框添加到网格视图的方法 If e Row RowType DataControlRowType DataRow Th
  • 对象是引用类型还是值类型?

    我仍然有疑问object 它是任何事物 任何类的主要基类 但它是引用类型还是值类型 或者喜欢这些行为中的哪一个呢 我需要澄清这一点 我很难理解这一点 object obj1 OldString object obj2 obj1 obj1 N
  • 更改视图、plot3D、Julia 语言(类似于 matplotlib)

    我正在尝试改变 3D 散点图的视角 朱莉娅语言 例如 此代码更改了视角 但每次更改时都会单独绘制点 而不是一起绘制 for i 1 10 X i Y i 2 Z i 3 fig figure ax gca projection 3d plo
  • 在 Spring Boot 中从属性文件注入值数组

    好的 所以我有一个config properties market curpairs 0 name EuroDollar market curpairs 0 symbol EURUSD market curpairs 0 minamount
  • Ryacas 的符号矩阵乘法

    我定义两个矩阵mat1 and mat2 in Sym适合 Ryacas 符号计算的类 library Ryacas x lt Sym x mat1 lt List List x 2 List x 3 x and mat2 lt List
  • 处理路径长度的问题

    我正在创建一个库 用于在 Linux 和 Windows 上进行文件操作 所以我需要处理路径 主要要求是我的函数将接收 UTF8 格式的字符串 但这会导致一些问题 其中之一是我正在使用MAX PATH在窗户上和PATH MAX在linux中
  • 为什么vscode中与“Reload Window”绑定的按键“Ctrl + R”不Reload Window?

    我是 vscode 的新用户 我遇到了一个问题 我被告知可以通过 重新加载窗口 解决 所以我首先通过 命令面板 找到它 它确实解决了我的问题 但是 我注意到它说它绑定到 Ctrl R 那么 如果这是它所绑定的键序列 为什么按住 Ctrl 并
  • 使用 Getopt::Long 时出现错误“panic: attempts to copy freed scalar”

    我收到错误 panic attempt to copy freed scalar a121fb4 to a156be8 at p pl line 13 当我运行以下程序时 p pl use warnings use strict use G
  • 应用程序spyder启动可能会产生错误窗口

    在我的Windows 10中 当我尝试通过anaconda navigator打开spyder时 会发生这种情况 Application spyder launch may have produced errors Traceback mo
  • 在 PHP 中使用冒号属性解析 XML

    我有以下 XML 结构
  • 使用 Golang 将 MySQL 表转储为 JSON

    正在用 Go 将 MySQL 快速转储到 JSON 但是我发现我从数据库检索的所有内容都是 byte大批 因此 我将所有内容都编码为字符串 而不是本机 JSON 整数或布尔值 代码的子集 import encoding json datab
  • docker 容器中的 root 权限被拒绝

    在过去的几天里 我在构建或运行 docker 容器时遇到了一些问题 root 似乎没有访问文件系统的权限 例如 我创建了这个非常简单的 Dockerfile FROM centos RUN id ls l usr bin yum usr b
  • Elm 中有并行性吗?

    可以用 Elm 编写并行代码吗 Elm 是纯函数式的 因此不需要锁定 当然 我可以使用 Javascript FFI 在这里生成工人并自己完成 但是 我想要更用户友好的 方式 来做到这一点 简短回答 不 目前还没有 但下一个版本 0 15