haskell-ja > Archives > 2009/07/13

2009/07/13 01:37:57 UTCnobsun
#
どなたか知ってたら教えてください
#
ghciのコマンドの出力結果をファイルに書きこむ方法
#
たとえば、:browse Control.Monad の出力結果をファイルに書きこむ方法がしりたいです。
#
もちろんEmacs上で実行してcopy & paste という方法は知っていますが、スクリプトとかで処理したいのです。
#
ああそうかわかった。
#
自己解決しちゃったかも。
#
ためしてみよう。
2009/07/13 02:15:21 UTCnobsun
#
lazySでやったじゃん > 儂
#
System.Process.runInteractiveCommand :: String -> IO (Handle,Handle,Handle,ProcessHandle)
#
を使えばいいだけだった。。。覚えてろよ > 儂 orz
2009/07/13 04:46:01 UTCnwn
#
書いてみた: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6919#a6919
#
ghci のコマンドを引数に取ると標準出力の内容を String で返す
#
ファイルに書き込むだけだったら ghc -e 'command' > output とかすればいいと思ったけど
#
Haskell から触るなら runInteractiveCommand を使うより簡単な方法を思いついたので
2009/07/13 04:52:14 UTCnobsun
#
おお。ghc -e 'command' では command に Haskellの式しか渡せないと信じていた orz
2009/07/13 04:52:17 UTCnwn
#
ちなみに対話環境から数回呼ぶと途中でフリーズする。。。
#
後で直すかも
#
-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 はソース呼んでびっくりした記憶が
2009/07/13 06:06:36 UTCnobsun
#
うはは。おはずかしいかぎり。まだつくりかけまるだしの汚いコードです。f(^^;)
#
> そういえば lazyS はソース呼んでびっくりした記憶が
2009/07/13 06:15:57 UTCnobsun
#
import System.Environment
import System.Process
main = fmap head getArgs >>= \ cmd -> readProcess "ghc" ["-e",cmd] [] >>= putStrLn
2009/07/13 06:23:27 UTCnobsun
#
main = getArgs >>= flip (readProcess "ghc") [] . ("-e":) >>= putStr
#
でもいいのかな
2009/07/13 06:24:11 UTCnwn
#
readProcess 知らなかった
#
http://hackage.haskell.org/packages/archive/process/1.0.1.1/doc/html/System-Process.html#v%3AreadProcess
#
なるほどなー
2009/07/13 09:07:06 UTCyasuyuki
#
はろーはすけらー
2009/07/13 09:14:47 UTCnwn
#
へろー
2009/07/13 10:43:29 UTCnwn
#
ほえー: http://www.refactory.org/s/functions_for_combining_predicates/view/latest
2009/07/13 12:37:37 UTCnobsun
#
p &. q = uncurry (&&) (p &&& q)
#
p |. q = uncurry (||) (p &&& q)
2009/07/13 13:09:19 UTCnwn
#
!?
#
(!?) = nobsun
#
nobsun :: Pointwise -> Pointfree