我是Haskell的新手。最近,我听说这个名为GHCJs的编译器,你可以在Haskell中编写代码然后编译成Javascript。
我有兴趣使用诸如three.js和webgl之类的库来制作很酷的交互式3D动画。在使用GHCJ时,是否可以从Haskell调用这些javascript库?
答案 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线程: