所以我在回答this question时注意到,提出问题的人似乎是一名javascript开发人员。而且我在haskell中编写的代码很简单,我认为我试着尝试将其编译为javascript。
所以,我下载了急速的Windows二进制包(为什么.msi需要重启?!!?),将其添加到我的路径,发布haste-cabal update
和haste-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脚本源文件?
答案 0 :(得分:1)
是否有可能存在旧版本的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的图片。
(Re:MSI安装程序需要重新启动,这是必需的,因为它会将Haste二进制文件添加到%PATH%
,这不会立即生效。我认为重新登录就足以让它成功然而,效果。)