Скомпилируйте сценарий стека вместо его запуска - PullRequest
0 голосов
/ 03 апреля 2019

Инструмент сборки stack имеет возможность обрабатывать обычно скомпилированный исходный файл haskell как скрипт. (https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter)

Можно ли таким же образом создать скомпилированный исполняемый файл?

Я искал раздел help в stack и stack script, но не смог найти варианты, которые сделали бы это возможным.

script.hs:

#!/usr/bin/env stack
{-
  stack script
  --resolver lts-13.14
  --package turtle
-}

main = print "hello"

Так что, если ему даны соответствующие права, этот файл может быть выполнен. Я думаю, что за кулисами стек компилирует файл, а затем просто запускает его. И я хотел бы просто получить скомпилированный промежуточный двоичный файл.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Нет, это не скомпилировано.Он проходит через runhaskell, который является интерпретатором Haskell.Если вы хотите скомпилировать это ... сделайте это.Вместо запуска сценария возьмите параметры --resolver и --package из комментария сценария и передайте их следующим образом

stack ghc --resolver lts-13.14 --package turtle test.hs
0 голосов
/ 07 апреля 2019

Команда script принимает как --compile, так и --optimize в качестве флагов, что даст стеку команду сначала скомпилировать в исполняемый файл (необязательно с -O2 уровнем оптимизации) перед запуском.

...