我试图弄清楚 Haskell 中的迭代 I/O 是什么。我用一些定义检查了以下 Haskell-Wiki 。
我不明白该函数的第二行、第三行和最后两行的含义:
enumerator :: FilePath -> Iteratee (Maybe Char) o -> IO o
enumerator file it = withFile file ReadMode
$ \h -> fix (\rc it -> case it of
Done o -> return o
Next f -> do
eof <- hIsEOF h
case eof of
False -> do
c <- hGetChar h
rc (f (Just c))
True -> rc (f Nothing)
) it
我知道, iteratee 函数做了什么,但我不明白一些行。这个维基页面上的其他功能真的很神秘。我不明白他们在做什么,因为我错过了一些解释。