在shell中,您可以将命令串在一起,用分号分隔:
cd ../haskell; rm ./foo; ghc foo.hs; cd ../original_directory
如果你能为ghci的命令行参数做类似的事情会很好,例如。
ghci Foo.hs; a <- getFoo; print a
这可能吗?
答案 0 :(得分:7)
您可以使用ghc -e
:
sorghum:~/programming% cat test.hs
getFoo = getLine
sorghum:~/programming% ghc test.hs -e 'do { a <- getFoo; print a }'
oenuth
"oenuth"
答案 1 :(得分:3)
您可以在静默模式下运行ghci并通过其标准输入传递指令:
$ cat&gt; ghciPipeTest.hs
getFoo = return 37 :: IO Int
$ ghci -v0 ghciPipeTest.hs&lt;&lt;&lt; 'getFoo&gt;&gt; =打印'
37个
$
或
$ ghci -v0 ghciPipeTest.hs&lt;&lt;&lt; $'a&lt; - getFoo \ n打印'
(假设您使用类似bash的shell。它也适用于引号内的实际换行符)
当然,它也可以在非静音模式下工作,输出看起来有点奇怪:
$ ghci ghciPipeTest.hs&lt;&lt;&lt; $'a&lt; -getFoo \ n print a'
GHCi,版本7.4.1:http://www.haskell.org/ghc/ :?寻求帮助
加载包ghc-prim ...链接...完成。
加载包integer-gmp ...链接...完成。
加载包基...链接...完成。
[1/1]编译Main(ghciPipeTest.hs,解释)
好的,加载的模块:Main。
*主&GT; *主&GT; 37个
*主&GT;离开GHCi。