使用ghcjs将Haskell模块编译为Javascript

14

使用ghcjs编译Haskell模块为JS是否可能?我尝试了一下,但似乎需要先定义main函数才能生成JS。以下是玩具代码:

module Test where

add :: Int -> Int -> Int
add x y = x + y 

我不知道如何使用ghcjs将其编译为JS。如果没有定义主函数,它只会编译.hi和.o文件。如果我能找到一种方法将其编译为JS(使用适当的Z-encoded函数名称和相应的JS对象,就像在C中使用FFI一样),那么我可以使用更强大的Haskell库(如unordered-containersvector)来实现某些算法,编译为JS,并通过JS FFI在Elm中使用。

看起来Fay有这个能力。我想先在ghcjs上调查一下它。


你的精确命令行是什么? - Joachim Breitner
@JoachimBreitner,执行ghcjs Test.hs命令,其中Test.hs是上面的代码。ghcjs声称它正在“生成JavaScript”,但我没有看到任何js代码。我使用的版本是0.1.0。 - Sal
你尝试过 ghcjs -c Test.hs 吗?这样做效果更好吗? - Joachim Breitner
@JoachimBreitner,添加“-c”选项也没有任何区别。 - Sal
Fay是一个适用于Haskell的子集,可以编译成JavaScript。https://github.com/faylang/fay/wiki - AnneTheAgile
1个回答

7

我刚在IRC上询问了ghcjs作者(luite),他说:“目前没有很好的直接导出库的方式。”

不过,他似乎非常有兴趣支持这种能力,所以我希望并且乐观地认为,这将在不久的将来发生改变。关注这个问题的地方是在 github 上请求此功能的 ticket


但是截至2015年4月,这个状态是什么? - Erik Kaplun
1
这个问题自2015年2月以来就没有更新过,而且仍然是开放状态,看起来似乎还没有完成。ghcjs的开发仍然非常活跃(最近一天有提交记录),所以我对未来能够实现这个功能仍然持乐观态度。 - Justin Leitgeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接