6

多くの人は、.ghciモジュールを にロードするために必要なオプションを含めるために、haskell プロジェクトにファイルを含めますghci。次に例を示します。

:set -isrc -itest -iexamples -packagehspec2

mainただし、 〜を含むファイルを実行しようとすると、runhaskellこれらすべてのオプションを繰り返す必要があります。たとえば、次のようになります。

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

runhaskellファイルからオプションを取得する良い方法はあり.ghciますか?

4

1 に答える 1

4

仕事をする方法がわかりません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"
于 2014-10-31T07:21:51.110 に答える