4

シェルでは、コマンドをセミコロンで区切って文字列化できます。

cd ../haskell; rm ./foo; ghc foo.hs; cd ../original_directory

ghciのコマンドライン引数に対して同様のことができれば素晴らしいと思います。

ghci Foo.hs; a <- getFoo; print a

これは可能ですか?

4

2 に答える 2

7

これに使用できますghc -e

sorghum:~/programming% cat test.hs
getFoo = getLine
sorghum:~/programming% ghc test.hs -e 'do { a <- getFoo; print a }'
oenuth
"oenuth"
于 2012-08-24T15:21:49.020 に答える
3

ghciをサイレントモードで実行し、標準の入力を介して命令を渡すことができます。

$ cat> ghciPipeTest.hs
getFoo = return 37 :: IO Int
$ ghci -v0 ghciPipeTest.hs <<<'getFoo >> = print'
37
$

また

$ ghci -v0 ghciPipeTest.hs <<< $'a <-getFoo \ n print a'

(bashのようなシェルを使用すると仮定します。引用符内の実際の改行でも機能します)

もちろん、非サイレントモードでも機能します。出力は少し奇妙に見えます。

$ ghci ghciPipeTest.hs <<< $'a <-getFoo \ n print a'GHCi
、バージョン7.4.1:http : //www.haskell.org/ghc/:?ヘルプが必要な場合
パッケージghc-primのロード...リンク...完了。
パッケージinteger-gmpのロード...リンク...完了。
パッケージベースの読み込み...リンク...完了。
[1/1] Mainのコンパイル(ghciPipeTest.hs、インタプリタ)
OK、モジュールがロードされました:Main。
*メイン>*メイン>37
*メイン>GHCiを離れます。

于 2012-08-24T14:40:03.550 に答える