Ответ 1
Использование ghci
будет просто загружать модуль в GHCi. Чтобы запустить его как script, используйте runhaskell
или runghc
:
#!/usr/bin/env runhaskell
main = putStrLn "Hello World!"
Можно ли написать сценарии оболочки в Haskell, и если да, то как вы это делаете? Просто так меняете интерпретатор?
#!/bin/ghci
Использование ghci
будет просто загружать модуль в GHCi. Чтобы запустить его как script, используйте runhaskell
или runghc
:
#!/usr/bin/env runhaskell
main = putStrLn "Hello World!"
Хорошо проверьте эту презентацию: Практический Haskell: скрипты с типами
Он должен работать, если вы измените интерпретатор на это:
#!/usr/bin/runhaskell
По состоянию на октябрь 2016 года, есть лучший ответ на этот вопрос: используйте интерпретатор инструмента Haskell Tool script. stack
-сертифицированные сценарии Haskell переносимы, поскольку они загружают (и кэшируют) правильную версию ghc
и все их зависимости от пакета.
#!/usr/bin/env stack
-- stack --resolver lts-3.2 --install-ghc runghc
main = putStrLn "Hello World!"
См. также учебник Как script со стеком.
Другим способом написания сценариев оболочки с использованием Haskell является генерация сценариев, например bashkell . Это полезно, если вы, возможно, захотите запустить систему, в которой не установлено haskell.