Haskell 界隈では、生産者/消費者のモデルとして、Enumerator/Iteratee (EI)が流行っている。しかし、EI を理解するのは難しい。 そこでこの記事では、もっと簡単な生産者/消費者モデルを示す。EI は Enumerator が Iteratee に push する push 型だが、紹介するモデルは pull 型である。 僕が書いたEI のチュートリアル「A tutorial on the enumerator library」から例を取る。すなわち、UNIX の find コマンドを実装する。 命令型 find 命令型プログラミング言語から Haskell にやってきた初心者プログラマーなら、こんなコードを書くだろう。 import Control.Monad import Control.Applicative import Data.List import