如何从 haskell 源文件快速生成 .js 文件?
How to produce a .js file from a haskell source file with haste?
所以我注意到,在回答 时,提出问题的人似乎是 java 脚本开发人员。由于我在 haskell 中编写的代码非常简单,所以我想我赶快尝试将其编译为 javascript。
所以,我下载了haste的Windows二进制包(为什么.msi需要重启?!!?),添加到我的路径,发布haste-cabal update
和haste-cabal install split
在阅读 hastec --help
的输出后,我发布了:
PS E:\h\Whosebug> hastec -o hexagon.js --pretty-print hexagon.hs
作为我对如何获得我正在寻找的输出的最佳猜测。
出乎我的意料,加速输出是这样的:
hastec.exe: user error (shell expression failed in readModule: Data.Binary.Get.runGet at position 8: not enough bytes)
那么,我的问题是:我需要做什么才能获得 java 脚本源文件?
您的源目录中是否可能有旧版本的 Haste,或者有来自不同版本编译器的中间文件(例如 .jsmod
)?这听起来像是 Haste 在遇到损坏的中间文件时产生的(非常无用的)错误消息。
检查您调用的二进制文件的版本是否符合您的预期 (hastec --version
)。然后,尝试删除目录中的所有中间文件以及 %USERPROFILE%\AppData\Roaming\haste
中的所有文件,重新安装 split
,并使用 -fforce-recomp
标志重新编译。您还应该添加一个 main
函数,以便 Haste 有一个入口点到您的程序,从中开始链接。如果你只想让一些 Haskell 函数对外部 JavaScript 可用,你可以使用 export
foreign function interface:
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Haste.Foreign
import Hexagon
main = export "picture" Hexagon.picture
您可能还希望使用 --onexec
标志编译您的程序,以确保 main
在加载时立即运行并导出 picture
,而不是在页面加载时是默认值:
> hastec -o hexagon.js --pretty-print --onexec hexagon.hs
这样做之后,hexagon.js
之后包含的任何代码都可以调用例如Haste.picture(5);
为了生成尺寸为 5 的图片。
(回复:MSI 安装程序需要重启,这是必需的,因为它将 Haste 二进制文件添加到您的 %PATH%
,不会立即生效。我假设重新登录就足以使但是,它会生效。)
所以我注意到,在回答
所以,我下载了haste的Windows二进制包(为什么.msi需要重启?!!?),添加到我的路径,发布haste-cabal update
和haste-cabal install split
在阅读 hastec --help
的输出后,我发布了:
PS E:\h\Whosebug> hastec -o hexagon.js --pretty-print hexagon.hs
作为我对如何获得我正在寻找的输出的最佳猜测。
出乎我的意料,加速输出是这样的:
hastec.exe: user error (shell expression failed in readModule: Data.Binary.Get.runGet at position 8: not enough bytes)
那么,我的问题是:我需要做什么才能获得 java 脚本源文件?
您的源目录中是否可能有旧版本的 Haste,或者有来自不同版本编译器的中间文件(例如 .jsmod
)?这听起来像是 Haste 在遇到损坏的中间文件时产生的(非常无用的)错误消息。
检查您调用的二进制文件的版本是否符合您的预期 (hastec --version
)。然后,尝试删除目录中的所有中间文件以及 %USERPROFILE%\AppData\Roaming\haste
中的所有文件,重新安装 split
,并使用 -fforce-recomp
标志重新编译。您还应该添加一个 main
函数,以便 Haste 有一个入口点到您的程序,从中开始链接。如果你只想让一些 Haskell 函数对外部 JavaScript 可用,你可以使用 export
foreign function interface:
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Haste.Foreign
import Hexagon
main = export "picture" Hexagon.picture
您可能还希望使用 --onexec
标志编译您的程序,以确保 main
在加载时立即运行并导出 picture
,而不是在页面加载时是默认值:
> hastec -o hexagon.js --pretty-print --onexec hexagon.hs
这样做之后,hexagon.js
之后包含的任何代码都可以调用例如Haste.picture(5);
为了生成尺寸为 5 的图片。
(回复:MSI 安装程序需要重启,这是必需的,因为它将 Haste 二进制文件添加到您的 %PATH%
,不会立即生效。我假设重新登录就足以使但是,它会生效。)