前の続き。
実際にファイルを読み込めるようにしました。
EnumeratorMはIterVをモナドで包むための型です。
enumReaderはブログの例とは違いますが、一字ずつ読み込むのではなく、BufferReaderを用いて一行づつ読み込むようにしています。
<<<はScalazで定義されており、composeと同じです。
enumと同様に、Doneになるまで処理を繰り返します。
enumFileはファイルをenumReaderに渡す。
bracketにより、closeReaderが確実に行われることが保証されています。
実行例
現在、scalaz.effectsにあるIterateeな入出力関数はこれらと、標準入力からの読み込みだけです。
そういえば okomok さんが絶賛開発中(?) の
返信削除「 Scala での Haskell DSL (?) 」
の ken っていうライブラリの中にも Iteratee ってclass あるけれど
https://github.com/okomok/ken/blob/7f8036d1d5c3469b2f5ff8759326b6ee21cdd3bd/src/main/scala/com/github/okomok/ken/enumerator/_Types.scala#L43-65
>kenji
返信削除あ、それはkenの耐久性を調べるためのもんなので
相手にしない方がいいです 笑
Haskellのコードのコピペですし・・・