使用Haskell的javascript库

时间:2016-07-02 02:14:53

标签: javascript haskell ghcjs

我是Haskell的新手。最近,我听说这个名为GHCJs的编译器,你可以在Haskell中编写代码然后编译成Javascript。

我有兴趣使用诸如three.js和webgl之类的库来制作很酷的交互式3D动画。在使用GHCJ时,是否可以从Haskell调用这些javascript库?

1 个答案:

答案 0 :(得分:5)

是的,您可以从ghcjs编译的Haskell中调用Javascript库。

这是一个简单的例子:

{-# LANGUAGE JavaScriptFFI      #-}
{-# LANGUAGE OverloadedStrings  #-}

import qualified Data.JSString    as T
import qualified GHCJS.Foreign

foreign import javascript unsafe "alert($1)" alert :: T.JSString -> IO ()

main = alert "hello world"

从这个例子中可以看出,使用foreign import javascript功能可以在Haskell程序中使用JS函数。

我不确定是否有正式的WebGL界面库,但是在网上快速搜索显示其他人创建了部分界面库 - 例如见this example。基本上,您必须为应用程序使用的函数创建foreign声明。

对于three.js,我发现了这个github回购:

https://github.com/manyoo/ghcjs-three

也可以从JS调用Haskell代码,即参见这个SO线程:

How to call Haskell from Javascript with GHCJS