2017-04-03 19 views
3

直觀地說,我已經試過當用`ghc -e`運行Haskell代碼時,是否可以傳遞命令行參數?

$ ghc -e "import System.Environment" -e "getArgs" -- a b c 
ghc: unrecognised flag: -- 
did you mean one of: 
    -n 
    -F 
    -v 

Usage: For basic information, try the `--help' option. 
$ 

...沒有成功。

我期待着輸出沿着["a","b","c"]的路線。

The docs here似乎沒有提及任何方式來通過cli參數。

stdio中的AFAIK管道按預期工作。

也許如果它不可能通過ghc -e的參數,也許它仍然可能與ghci提供一些代碼,一些參數,運行,然後退出?

+1

如果沒有辦法,你可以想一個能很好的,你應該把它提出GHC,無論是在HTTPS的:// GHC。 haskell.org/trac/ghc/或者通過https://github.com/ghc-proposals/ghc-proposals/上的GHC提案。 –

+2

我可以做的最好的:'ghc -e「import System.Environment」-e 「:set args abc」-e「getArgs」' – chi

+0

@chi我喜歡你的評論的方向。也許可以在這些行上定義一個shell函數。我已經開始把一個人放在一起。 – Wizek

回答

1

要回答這個問題的第二部分:

Prelude> :help :main 
Commands available from the prompt: 
    … 
    :main [<arguments> ...]  run the main function with the given arguments 
    … 
Prelude> let main = System.Environment.getArgs >>= print 
Prelude> :main foo bar 
["foo","bar"]