问题标签 [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 回答
788 浏览

haskell - GHCJS/Haste 可以自己编译吗?

如果是这样,那么我可以让人们通过更改其(Haskell)配置来玩弄我的项目:在浏览器中重新编译它,然后在浏览器中重新运行它。我不在乎速度。我只想能够在浏览器中演示一个难以设置的桌面项目。因此,可能的新用户可以在几秒钟内看到他们是否喜欢它,而无需设置。

那该多酷啊!

根据我的阅读,GHCJS 将 STG 编译​​成 JavaScript。它说它使用 GHC API,所以我们也应该能够将它编译成 JavaScript,就像任何其他 Haskell 库一样。(对吗?)虽然 GHC 运行时有很多 C,但编译器本身是纯 Haskell 是真的吗?

所以:

  1. GHCJS 可以自己编译成 JavaScript 吗?
  2. Haste 可以自己编译成 JavaScript 吗?
  3. 是否已完成其中任何一项?(这就是http://haste-lang.org/try/的工作原理吗?它似乎需要一个网络。)
0 投票
1 回答
269 浏览

haskell - 如何为 .cabal 文件中的不同目标使用两个不同的编译器?

当我运行cabal build它时,它使用一些 Haskell 编译器在我的 .cabal 文件中构建可执行文件和/或测试套件。

我可以控制哪个编译器用于不同的目标吗?理想情况下,我希望有单独的构建目标,在同一个.cabal文件中使用 ghc 和 ghcjs。在我看来,有人可能想在同一个项目中使用 ghc 和 hugs 或两个版本的 ghc。这目前可能吗?

另外,cabal 如何决定运行时使用什么编译器cabal build?我看到我的~/.cabal/config文件中有一个编译器选项,但是将其从ghcto更改为ghcjs并取消注释它似乎并没有改变什么cabal build

0 投票
1 回答
549 浏览

javascript - 编译成 JavaScript 的 Haskell 程序怎么会比 JavaScript 本身更快呢?

与手动编写和优化的代码相比,出于显而易见的原因,我一直认为 GHCJS 生成的 JavaScript 程序非常慢。但是,在尝试它时,我注意到它并没有我想象的那么糟糕。我决定运行一系列小型基准测试来掌握真实性能,而这个让我特别惊讶。该程序只是用“1”填充一个数组并将它们相加。

哈斯克尔:

JavaScript:

还有一个粗略的基准:

GHCJS 怎么能比苗条、干净的原生 for 循环运行得更快?考虑到生成的代码应该暴露的装箱数量,这应该是不可能的。

0 投票
2 回答
1050 浏览

haskell - 是否可以在浏览器中运行用 Haskell 编写的游戏?(也许通过 GHCJS?)

我想知道目前是否可以使用Helm或任何其他通过 GHCJS 在浏览器上运行的引擎在 Haskell 中编写游戏?

0 投票
1 回答
222 浏览

haskell - Why do I get "ghcjs-boot: command not found"?

I've installed ghcjs by the command

And I get something like

for my last line.

But when I tried this command

I got -bash: ghcjs-boot: command not found What's the problem?

0 投票
2 回答
2239 浏览

haskell - 致命:程序 autoreconf 是必需的,但未找到

我遵循了 GHCJS 的安装,当我来到“构建库”步骤时,我输入了命令ghcjs-boot --dev 但是我在终端中得到了以下几行

有谁知道这里有什么问题?

0 投票
1 回答
366 浏览

javascript - 我正确使用 ghcjs 吗?

我对 Haskell 和 ghcjs 很陌生。我从第一个“你好,世界!”开始。程序来学习。

这是我从 GHCJS wiki 复制的 Haskell 程序:

我使用命令ghcjs -o hello hello.hs将其编译为 javascript,并尝试使用命令在终端上运行它node hello.jsexe/all.js,但是当我尝试打开生成的文件“index.html”时:

但是当我在 Chrome 中打开它时,页面是空白的。有谁知道这里有什么问题?

0 投票
2 回答
3003 浏览

haskell - 如何使用 GHCJS 从 Javascript 调用 Haskell

我一直在玩 GHCJS。FFI 可用于从 Haskell 调用 javascript,但我不知道如何反过来。假设我有一个在 Haskell 中编写的超级有用的实用程序函数:

有没有可能做一些事情,所以我可以从 Javascript 中调用它?我最接近的是注意到这h$main(h$main2CMainzimain)将触发我的 Haskell 主函数。

0 投票
0 回答
183 浏览

javascript - 从 GHCJS FFI 绑定触发 JavaScript 导入/需要

我将使用 Famo.us 示例作为起点:

现在我有这些 GHCJS FFI 绑定:

— 如您所见,在内联 JavaScript 代码中,我总是需要引用诸如famous.core.FOO使用完全限定名称之类的东西,而不是FOO像通常那样。

这是使用这些 FFI 绑定的等效 Haskell 片段(为了清楚起见,隐藏在高级包装器后面):

这里的问题是:是否有可能让 GHCJS 自动生成 egvar Engine = famous.core.Enginevar Surface = famous.core.Surface在使用依赖于它的 FFI 绑定时在输出的 JavaScript 中导入?还是我唯一的选择是要么总是在我的内联 JS 中使用完全限定的名称,要么总是只为每个 FFI 绑定手动导入一个名称?

0 投票
2 回答
1043 浏览

haskell - 带有反射/反射域的 XhrRequest

我想执行一个基本的 Ajax 请求,仅此而已。

reflex用于前端和Scotty后端。Firefox Web 控制台告诉我请求成功,我在那里看到了预期的结果。但是网站从 切换Just "default"Nothing而不是Just "success!".

这是一个完整的最小示例:

Scotty部分:

由于调试工具告诉我请求成功,我怀疑附近的错误,decodeXhrResponse但我有点迷失如何继续调试,因为它只是被编译为(不可读的)Javascript。

我使用来自 GitHub 的 try-reflex Nix 脚本来设置所有内容并ghcjs hello.hs在 Nix 环境中编译。

编辑:添加输出curl