12

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

那该多酷啊!

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

所以:

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

1 回答 1

11

据我所知,GHCJS 和 Haste 都直接利用 GHC。GHC,虽然主要是 haskell,但在运行时及其运行方式方面与相当数量的 cbit 相关联。我相当肯定,目前,两者都不能被编译为以“自托管”方式直接在浏览器中运行。

然而,Fay 是一种 JS 的“类 Haskell 方言”,可以通过 GHCJS 编译,这非常漂亮(https://github.com/ghcjs/ghcjs-examples/tree/master/fay-hello)也许不是你想要的。

如果您的系统足够简单,另一种选择是使用 emscripten 在浏览器中放置拥抱,并让您的用户使用它。

正如您所猜测的那样,各种“在浏览器中尝试”站点实际上都使用与机器的连接,通常运行类似mueval实际执行给定代码的东西。

于 2015-02-20T05:52:29.210 回答