Как создать файл.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%, который не вступает в силу немедленно. Однако я предполагаю, что повторного входа в систему будет достаточно, чтобы он вступил в силу.)

Другие вопросы по тегам