问题标签 [ghcjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
171 浏览

haskell - 使用 Reflex 有条件地添加 DOM 元素

我有一个接收动态的函数,并且必须显示一个 dom 元素,该元素将包含不同类型的子元素,具体取决于动态中的值。有没有办法使用 Reflex 和 Reflex-Dom 来做这样的事情?如果动态中的值可以通过模式匹配展开,代码将如下所示:

0 投票
1 回答
609 浏览

haskell - Haskell Miso 的更快编译

我使用 Haskell Miso 框架编写前端 Web 应用程序,Nix 编译过程需要很长时间。

我怎样才能加快速度?

或者有什么推荐的方法来实现近乎瞬时的编辑-编译-运行周期?

0 投票
0 回答
72 浏览

node.js - 增加 ghcjs 调用的节点内存

当我在大型代码库(~10k LOC,大量模板 haskell)上运行 ghcjs 时,我不时收到此错误:

我最好的选择是这是一个内存不足的错误。当我重新运行构建时,它通常会第二次或第三次运行(可能是因为它可以建立在以前运行的部分结果之上?)。

现在我想知道是否有一种方法可以为节点提供比默认情况下获得的 1GB 更多的内存(我认为?)。有--max_old_space_size,我在这里搜索“增加节点内存”时发现的,但我还没有找到一种方法将该参数传递给从 ghcjs 调用的节点。

谢谢!

编辑:可能相关:https ://github.com/ghcjs/ghcjs/issues/601,https : //github.com/ghcjs/ghcjs/issues/588

0 投票
1 回答
184 浏览

haskell - 使用 Aeson 对 GHCJS 中的 json 值进行高性能解码

在将 JSON 列表解码为本机 [(UTCTime, Double)] 时,我发现了一个奇怪的行为。对于具有 3K 个元素的列表,该操作大约需要 2 秒。我一直在研究浏览器的性能报告,但找不到明确的罪魁祸首。

如果我解码为其他数据类型,我也一直在测试它的行为,并发现如果我使用 String 而不是 UTCTime,则操作所需的时间减少了一半。

这些数字正常吗?有没有办法改善时代?我正在使用 GHCJS 0.2.1.9 GHC 8.0.1 和 lts-7.19。

0 投票
0 回答
70 浏览

haskell - 反射:发送多个 http 请求以获取事件条目的动态列表

使用 reflex-frp 我有一个包含文本输入的条目列表。我还有一个按钮,单击时应触发 n 个 http 请求,其中 n 是条目数,每个请求应包含相应的文本。因此我有,

为了发送我试图使用的请求

因此,我需要以某种方式允许我将列表事件转换为事件列表的函数:

但我没有找到任何方法来做到这一点。最有希望的方法似乎涉及风扇功能和EventSelector,但我无法理解它,并且在线文档也不多。

这可能吗?

0 投票
0 回答
87 浏览

haskell - 从堆栈项目中启动 nixos 中的 ghcjs 时出错

我在 Nixos 中运行 GHCJS 的引导阶段时遇到错误。GHCJS 正在通过堆栈安装:

它在“安装阶段 0”期间失败:

我的 stack.yaml 看起来像:

我读到这是由于cabal-install 2.0 和 GHCJS 之间的不兼容造成的。尽管我一直无法找到修复它的方法。有没有办法让它构建?

0 投票
1 回答
98 浏览

javascript - 在 GHCJS 中调用 emscripten 导出的导入

我正在尝试使用 ghcjs 将 haskell 库minisat 移植到 JavaScript,以便集成到更大的 haskell-ghcjs 项目中。

minisat 包含几个来自 ac 库的 ffi 导入。我已经设法使用 emscripten 将 c 库编译为 javascript,并导出 minisat 所需的函数。到目前为止,一切都很好。

但是,有几个导入看起来像这样:

foreign import ccall safe minisat_solve :: Solver -> Int -> Ptr (Lit) -> IO (Bool)

它导入了一个如下所示的函数:

int minisat_solve(minisat_solver *s, int len, minisat_Lit *ps)

我从文档中的理解是,当 emscripten 导出一个接受或返回指针的函数时,指针变成了 JavaScript 数字类型。

ghcjs文档建议应该可以通过适当地包装一个 JavaScript 函数来保留现有的外部导入。但是,ghcjs 将指针类型大致表示为由 JavaScript 对象和数字组成的一对。

我认为包装代码应该大致

但我对类型不匹配感到困惑。

所以,这里的挑战是:解释如何正确地包装一个 emscripten 导出为ccallimport by ghcjs,使用上面的包装器代码作为一个例子(或者一个反例,如果我完全错了)

0 投票
1 回答
173 浏览

haskell - 使用 Haskell Tool Stack 初始化一个新的 GHCJS 项目

使用 Haskell Stack 初始化 GHCJS 项目需要做什么?

按照堆栈文档,我正在尝试初始化一个 GHCJS 项目,以便我可以将 Haskell 代码编译为 JavaScript。

完成后stack templates我看到有一个 GHCJS 模板

当我尝试将新命令与此模板一起使用时,如下所示:

stack new ghcjsSetup ghcjs

我收到此错误消息:

0 投票
1 回答
297 浏览

haskell - 使用 GHCJS 和 Haskell Stack 将 Haskell 编译为 JavaScript

如何使用 GHCJS 和 Haskell Stack 将 Haskell 编译为 Javascript?

我有当前版本的 Haksell Stack 1.5.1

我可以使用以下命令初始化 GHCJS 项目: stack new ghcjsSetup ghcjs

进入项目目录后,我尝试遵循GHCJS 的 Stack 文档

我创建一个stack.yaml文件并对其进行编辑以匹配文档中的示例,因此看起来像这样。

进一步按照文档,我尝试使用以下命令安装和引导 GHCJS:

stack setup

此命令产生一个以错误结尾的输出。

因为这里发帖太长,所以我已经排除了输出的中间部分。其中包括许多警告消息。

0 投票
1 回答
129 浏览

haskell - 构建 docker 映像时堆栈 GHCJS 项目初始化错误

我正在尝试创建一个 docker 映像作为 GHCJS 开发环境。

我在使用堆栈初始化 GHCJS 模板项目的 Dockerfile 的这一行上遇到错误:

RUN stack new helloWorld ghcjs

整个 Dockerfile 是:

输出和错误是:

编辑:

这是编辑后的 ​​Dockerfile 以考虑@SamuraiJack 评论。它现在超越了这个问题中提到的问题。