使用来自 Haskell 的 javascript 个库

Using javascript libraries from Haskell

我是 Haskell 的新手。最近,我听说了一个名为 GHCJs 的编译器,您可以在其中编写 Haskell 中的代码,然后可以将其编译为 Javascript。

我对使用 three.js 和 webgl 等库来制作很酷的交互式 3d 动画很感兴趣。使用 GHCJ 时是否可以从 Haskell 调用这些 javascript 库?

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

这是一个简单的例子:

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

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

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

main = alert "hello world"

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

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

对于 three.js,我找到了这个 github 存储库:

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

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