runhaskell可以从.ghci获取选项吗?

时间:2014-10-31 06:20:10

标签: haskell ghc ghci runhaskell

许多人在其haskell项目中包含.ghci个文件,以包含将模块加载到ghci所需的选项。这是一个例子:

:set -isrc -itest -iexamples -packagehspec2

但是,当尝试运行包含mainrunhaskell的文件时,必须重复所有这些选项,例如:

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

是否有一种让runhaskell.ghci文件中选择选项的好方法?

1 个答案:

答案 0 :(得分: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"