Conduitの今
田中英行 tanakh@preferred.jp
2012/04/22 Yesod 1.0 勉強会
田中英行 tanakh@preferred.jp
2012/04/22 Yesod 1.0 勉強会
main = runResourceT $ do
sourceFile "utf8-txt.bz2" =$= bunzip2 =$= decode utf8 $$ sinkFile "decoded"
main = runResourceT $ do
sourceCmd "ls -alF" =$= conduitCmd "sort" $$ sinkHandle stdout
idPipe = forever $ await >>= yield . fromJust
w8tow16 = forever $ do
Just v1 <- await
Just v2 <- await
yield $ fromIntegral v1 * 256 + fromIntegral v2
例外安全
リソースをちゃんと扱う
enumeratee同士を連結できない
* Conduitいいよ! *
CPSのコードややこしいし、ユーザにとっては設計どうでもいいし、どうせI/Oに使うのがメインなのだから、副作用を使ってUglyだけどシンプルに行くよ => Conduit-0.0
副作用がない場合にConduitが激遅だよ!やっぱりPureにしよう。コードも意外とシンプルになったね => Conduit-0.2
Result型とかいらなかったね。あれ、3つの型が似てきた?Pipe?あれはダメだね => Conduit-0.3
Pipe素晴らしい! => Conduit-0.4
今のConduitはPipeとかなり似ている
リソース管理モナドの外付けによるリソース管理