所以我注意到,在回答这个问题的时候,问这个问题的人似乎是一个javascript开发人员。由于我用haskell写的代码很容易,我想我应该试着把它编译成javascript。
所以,我下载了Windows二进制包的匆忙(为什么。msi需要重新启动?!!?),将其添加到我的路径,发布haste-cabal update
和haste-cabal install split
,并在阅读hastec --help
的输出后,我发布:
PS E:hstackoverflow> 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脚本源文件?
是可能的,你有一个旧版本的匆忙躺在周围,或有中间文件(.jsmod
,例如)从不同版本的编译器在你的源目录?这听起来像(相当无用的)错误消息,当它运行到一个损坏的中间文件。
检查你调用的二进制文件的版本是否符合你的期望(hastec --version
)。然后,尝试删除目录中的所有中间文件以及%USERPROFILE%AppDataRoaminghaste
中的任何文件,重新安装split
,并使用-fforce-recomp
标志重新编译。您还应该添加一个main
函数,这样一来,在您的程序中就有了一个入口点,您可以从这个入口点开始链接。如果你想做的只是让一些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的图片。
(Re: MSI安装程序需要重新启动,这是必需的,因为它将匆忙二进制文件添加到您的%PATH%
,这不会立即生效。但是,我认为重新登录就足以使其生效。