如何快速地从haskell源文件生成.js文件



所以我注意到,在回答这个问题的时候,问这个问题的人似乎是一个javascript开发人员。由于我用haskell写的代码很容易,我想我应该试着把它编译成javascript。

所以,我下载了Windows二进制包的匆忙(为什么。msi需要重新启动?!!?),将其添加到我的路径,发布haste-cabal updatehaste-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%,这不会立即生效。但是,我认为重新登录就足以使其生效。

最新更新