#どなたか知ってたら教えてください
#ghciのコマンドの出力結果をファイルに書きこむ方法
#たとえば、:browse Control.Monad の出力結果をファイルに書きこむ方法がしりたいです。
#もちろんEmacs上で実行してcopy & paste という方法は知っていますが、スクリプトとかで処理したいのです。
#ああそうかわかった。
#自己解決しちゃったかも。
#ためしてみよう。
#lazySでやったじゃん > 儂
#System.Process.runInteractiveCommand :: String -> IO (Handle,Handle,Handle,ProcessHandle)
#を使えばいいだけだった。。。覚えてろよ > 儂 orz
##ghci のコマンドを引数に取ると標準出力の内容を String で返す
#ファイルに書き込むだけだったら ghc -e 'command' > output とかすればいいと思ったけど
#Haskell から触るなら runInteractiveCommand を使うより簡単な方法を思いついたので
#おお。ghc -e 'command' では command に Haskellの式しか渡せないと信じていた orz
#ちなみに対話環境から数回呼ぶと途中でフリーズする。。。
#後で直すかも
#-e command は対話環境に command を渡してるだけみたい
#$ ghc -e ':m +Control.Monad' -e 'sequence $ replicate 3 [1,2,3]'
[[1,1,1],[1,1,2],[1,1,3],[1,2,1],[1,2,2],[1,2,3],[1,3,1],[1,3,2],[1,3,3],[2,1,1],[2,1,2],[2,1,3],[2,2,1],[2,2,2],[2,2,3],[2,3,1],[2,3,2],[2,3,3],[3,1,1],[3,1,2],[3,1,3],[3,2,1],[3,2,2],[3,2,3],[3,3,1],[3,3,2],[3,3,3]]
#こんな感じに import って書かなくても良かったり
#そういえば lazyS はソース呼んでびっくりした記憶が
#うはは。おはずかしいかぎり。まだつくりかけまるだしの汚いコードです。f(^^;)
#> そういえば lazyS はソース呼んでびっくりした記憶が
#import System.Environment
import System.Process
main = fmap head getArgs >>= \ cmd -> readProcess "ghc" ["-e",cmd] [] >>= putStrLn
#main = getArgs >>= flip (readProcess "ghc") [] . ("-e":) >>= putStr
#でもいいのかな
#readProcess 知らなかった
##なるほどなー
#はろーはすけらー
#へろー
##p &. q = uncurry (&&) (p &&& q)
#p |. q = uncurry (||) (p &&& q)
#!?
#(!?) = nobsun
#nobsun :: Pointwise -> Pointfree