使用来自 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 线程:
我是 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 线程: