主要观点:介绍将 Haskell 代码编译为 WebAssembly(Wasm)的步骤,包括环境设置、编译简单 Haskell 文件、在浏览器中运行 WebAssembly 以及编译 Cabal 项目等,并提供相关代码和链接。
关键信息:
- 需安装支持
wasm32-wasi目标的自定义 GHC 版本,可参考GHC WebAssembly 元仓库进行安装。 - 简单 Haskell 函数示例及通过 C FFI 处理 JavaScript 和 Haskell 数字类型差异。
- 创建 HTML 文件在浏览器中运行 WebAssembly 模块,初始化 Haskell 运行时并调用函数。
- 创建 Cabal 项目处理字符串,编写相关 Haskell 代码并更新 Cabal 文件,进行构建和运行。
重要细节: - 安装 GHC 时可选择口味,如使用 GHC 9.8.3 时需设置
export FLAVOUR=9.8等。 - 编译 Haskell 文件到 WebAssembly 时使用
wasm32-wasi-ghc Test.hs -optl-Wl,--export=hs_init,--export=addTen。 - 在 HTML 中运行 WebAssembly 需引入相关库并初始化,调用函数时要处理字符串编码和解码。
- Cabal 项目中要添加
ghc-options以导出必要函数,构建后需复制.wasm文件到项目目录。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。