Как создать файл.js из исходного файла haskell с помощью haste?
Поэтому, отвечая на этот вопрос, я заметил, что тот, кто задал вопрос, кажется, является разработчиком javascript. И так как код, который я написал на haskell, достаточно прост, я подумал, что я спешу попробовать и скомпилировать его в javascript.
Итак, я скачал бинарный пакет Windows для ускорения (зачем.msi требуется перезагрузка?!!?), Добавил его в мой путь, выдал haste-cabal update
а также haste-cabal install split
и после небольшого чтения вывода hastec --help
Я выпустил:
PS E:\h\stackru> 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-скрипта?
1 ответ
Возможно ли, что у вас есть старая версия Haste или у вас есть промежуточные файлы (.jsmod
например) из другой версии компилятора в вашем исходном каталоге? Это похоже на (довольно бесполезное) сообщение об ошибке, которое Haste выдает, когда сталкивается с поврежденным промежуточным файлом.
Убедитесь, что версия двоичного файла, который вы называете, соответствует ожидаемой (hastec --version
). Затем попробуйте избавиться от всех промежуточных файлов в каталоге, а также от любых файлов в %USERPROFILE%\AppData\Roaming\haste
переустановка 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-инсталлятор, требующий перезагрузки, это необходимо, поскольку он добавляет двоичные файлы Haste в ваш %PATH%
, который не вступает в силу немедленно. Однако я предполагаю, что повторного входа в систему будет достаточно, чтобы он вступил в силу.)