许多人在他们的haskell项目中包含.ghci文件,以包含将模块加载到ghci中所需的选项。下面是一个例子:
:set -isrc -itest -iexamples -packagehspec2但是,当尝试通过runhaskell运行包含main的文件时,必须重复所有这些选项,例如:
runhaskell -isrc -itest -iexamples -packagehspec2 test/Spec.hs有没有让runhaskell从.ghci文件中选择选项的好方法?
发布于 2014-10-31 15:21:51
我不知道有什么方法可以让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"https://stackoverflow.com/questions/26668605
复制相似问题