6

我对 Haskell 相当陌生。最近,我听说了一个名为 GHCJs 的编译器,您可以在其中使用 Haskell 编写代码,然后将其编译为 Javascript。

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

4

1 回答 1

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特性使 JS 函数在你的 Haskell 程序中可用。

我不确定是否有官方的 WebGL 接口库,但在网上快速搜索显示其他人已经创建了部分接口库——例如,请参阅这个示例。基本上,您必须为foreign应用程序使用的函数创建声明。

对于three.js,我找到了这个github repo:

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

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

如何使用 GHCJS 从 Javascript 调用 Haskell

于 2016-07-02T03:44:50.083 回答