1

所以我注意到,在回答这个问题时,提出这个问题的人似乎是一名 javascript 开发人员。由于我在 haskell 中编写的代码很简单,所以我想我赶紧尝试一下并尝试将其编译为 javascript。

所以,我下载了 Windows 二进制包的仓促(为什么 .msi 需要重新启动?!!?),将它添加到我的路径,发出haste-cabal updatehaste-cabal install split并在阅读了一些输出后hastec --help,我发出:

PS E:\h\stackoverflow> 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 脚本源文件?

4

1 回答 1

1

您是否可能有旧版本的 Haste,或者.jsmod在您的源目录中有来自不同版本编译器的中间文件(例如)?这听起来像是 Haste 在遇到损坏的中间文件时产生的(非常无用的)错误消息。

检查您调用的二进制文件的版本是否符合您的预期 ( hastec --version)。然后,尝试删除目录中的所有中间文件以及使用标志%USERPROFILE%\AppData\Roaming\haste重新安装split和重新编译目录中的任何文件。-fforce-recomp您还应该添加一个main函数,以便 Haste 有一个指向您的程序的入口点,从该入口点开始链接。如果你只想让一些 Haskell 函数对外部 JavaScript 可用,你可以使用export 外部函数接口

{-# 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%.

于 2016-10-26T12:24:19.550 回答