Может ли runhaskell подобрать варианты из.ghci?

Многие люди включают .ghci файлы в своих проектах на Haskell, чтобы включить необходимые параметры для загрузки модулей в ghci, Вот пример:

:set -isrc -itest -iexamples -packagehspec2

Однако при попытке запустить файл, содержащий main через runhaskell нужно повторить все эти варианты, например:

runhaskell -isrc -itest -iexamples -packagehspec2 test/Spec.hs

Есть ли хороший способ runhaskell подобрать варианты из .ghci файл?

1 ответ

Я не знаю, как сделать runhaskell Работа. То, что я делаю, это просто труба "main" к ghci:

$ echo main | ghci -v0 test/Spec.hs

Если вы хотите передать аргументы командной строки, это тоже работает:

$ echo ':main -m "behaves correct"' | ghci -v0 test/Spec.hs

Или вы можете заключить его в скрипт:

#!/usr/bin/env runhaskell
>import System.IO
>import System.Environment
>import System.Exit
>import System.Process
>
>main :: IO ()
>main = do
>  source:args <- getArgs
>  (Just h, Nothing, Nothing, pid) <- createProcess (proc "ghci" ["-v0", source]) {std_in = CreatePipe}
>  hPutStr h ("import System.Environment\nSystem.Environment.withArgs " ++ show args ++ " main\n")
>  hClose h
>  waitForProcess pid >>= exitWith

Который можно использовать так:

$ ./run.lhs test/Spec.hs -m "behaves correct"
Другие вопросы по тегам