2014-10-31 9 views
6

Nhiều người bao gồm .ghci tệp trong dự án haskell của họ để bao gồm các tùy chọn cần thiết để tải mô-đun vào ghci. Dưới đây là một ví dụ:Có thể tùy chọn nhận runhaskell từ .ghci?

:set -isrc -itest -iexamples -packagehspec2 

Tuy nhiên khi cố gắng chạy một tập tin chứa main qua runhaskell người ta phải lặp lại tất cả các tùy chọn này, ví dụ:

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

Có cách nào tốt để cho runhaskell nhặt tùy chọn từ tệp .ghci?

Trả lời

4

Tôi không biết cách nào để thực hiện công việc runhaskell. Những gì tôi làm chỉ là ống "main" để ghci:

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

Nếu bạn muốn vượt qua đối số dòng lệnh, mà làm việc quá:

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

Hoặc bạn có thể bọc nó trong một kịch bản:

#!/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 

Mà có thể được sử dụng như sau:

$ ./run.lhs test/Spec.hs -m "behaves correct" 
Các vấn đề liên quan