问题标签 [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.
haskell - 使用 Reflex 有条件地添加 DOM 元素
我有一个接收动态的函数,并且必须显示一个 dom 元素,该元素将包含不同类型的子元素,具体取决于动态中的值。有没有办法使用 Reflex 和 Reflex-Dom 来做这样的事情?如果动态中的值可以通过模式匹配展开,代码将如下所示:
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
haskell - 使用 Aeson 对 GHCJS 中的 json 值进行高性能解码
在将 JSON 列表解码为本机 [(UTCTime, Double)] 时,我发现了一个奇怪的行为。对于具有 3K 个元素的列表,该操作大约需要 2 秒。我一直在研究浏览器的性能报告,但找不到明确的罪魁祸首。
如果我解码为其他数据类型,我也一直在测试它的行为,并发现如果我使用 String 而不是 UTCTime,则操作所需的时间减少了一半。
这些数字正常吗?有没有办法改善时代?我正在使用 GHCJS 0.2.1.9 GHC 8.0.1 和 lts-7.19。
haskell - 反射:发送多个 http 请求以获取事件条目的动态列表
使用 reflex-frp 我有一个包含文本输入的条目列表。我还有一个按钮,单击时应触发 n 个 http 请求,其中 n 是条目数,每个请求应包含相应的文本。因此我有,
为了发送我试图使用的请求
因此,我需要以某种方式允许我将列表事件转换为事件列表的函数:
但我没有找到任何方法来做到这一点。最有希望的方法似乎涉及风扇功能和EventSelector,但我无法理解它,并且在线文档也不多。
这可能吗?
haskell - 从堆栈项目中启动 nixos 中的 ghcjs 时出错
我在 Nixos 中运行 GHCJS 的引导阶段时遇到错误。GHCJS 正在通过堆栈安装:
它在“安装阶段 0”期间失败:
我的 stack.yaml 看起来像:
我读到这是由于cabal-install 2.0 和 GHCJS 之间的不兼容造成的。尽管我一直无法找到修复它的方法。有没有办法让它构建?
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 导出为ccall
import by ghcjs
,使用上面的包装器代码作为一个例子(或者一个反例,如果我完全错了)
haskell - 使用 Haskell Tool Stack 初始化一个新的 GHCJS 项目
使用 Haskell Stack 初始化 GHCJS 项目需要做什么?
按照堆栈文档,我正在尝试初始化一个 GHCJS 项目,以便我可以将 Haskell 代码编译为 JavaScript。
完成后stack templates
我看到有一个 GHCJS 模板
当我尝试将新命令与此模板一起使用时,如下所示:
stack new ghcjsSetup ghcjs
我收到此错误消息:
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
此命令产生一个以错误结尾的输出。
因为这里发帖太长,所以我已经排除了输出的中间部分。其中包括许多警告消息。
haskell - 构建 docker 映像时堆栈 GHCJS 项目初始化错误
我正在尝试创建一个 docker 映像作为 GHCJS 开发环境。
我在使用堆栈初始化 GHCJS 模板项目的 Dockerfile 的这一行上遇到错误:
RUN stack new helloWorld ghcjs
整个 Dockerfile 是:
输出和错误是:
编辑:
这是编辑后的 Dockerfile 以考虑@SamuraiJack 评论。它现在超越了这个问题中提到的问题。