1 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 20:28:13 ] haskell.org www.haskell.org/ 日本語サイト www.sampou.org/cgi-bin/haskell.cgi www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 pc.2ch.net/tech/kako/996/996131288.html Part2 pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ ・2chの仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
71 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:22:15 ] import System.Environment main = do args <- getArgs mapM_ dump args where dump file = do content <- readFile file putStr content こんなの?
72 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:30:54 ] そんなの… 俺とてつもなく頭悪い気がしてきた('A`)
73 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:45:24 ] >>71 のを短く書けばこんな感じ import System.Environment main = getArgs >>= mapM_ ((putStr =<<) . readFile)
74 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:57:22 ] >>71 のをArrowで書けばこんな感じ mapA :: ArrowChoice a => a b c -> a [b] [c] mapA f = arr listcase >>> arr (const []) ||| (f *** mapA f >>> arr (uncurry (:))) where listcase [] = Left () listcase (x:xs) = Right (x,xs) main :: IO () main = runKleisli (Kleisli (const getArgs) >>> mapA (Kleisli readFile) >>> arr concat >>> Kleisli putStr) () -- mapAみたいに便利な関数は早く標準ライブラリに入れてほしい
75 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:58:22 ] >>74 モナドと組み合わせると恐ろしく単純にかけるようになる main = getArgs >>= mapM_ (readFile >>> putStr)
76 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:01:01 ] >>75 Kleisliをつけたり外したりがいらないか?
77 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:27:49 ] まあ、>>>の正体は f >>> g = g . f だからなぁ。