suztomoの日記

To be a good software engineer

2011-11-21から1日間の記事一覧

"last" as iteratee

last last :: IterV el (Maybe el) last = Cont (step Nothing) where step :: (Maybe el) -> (StreamG el -> IterV el (Maybe el)) step _ (El el) = Cont (step (Just el)) step prev Empty = Cont (step prev) step prev EOF = Done prev EOF

Evaluate iteratee:

Divergent are iteratees which never become Done state, not even when it is receiving EOF. *Main> run $ enum diverge "abcadf" Nothingdiverge :: IterV el Int diverge = Cont step where step :: (StreamG el -> IterV el Int) step e = Cont stepru…

Evaluate iteratee: drop head

Let's perform the evaluation on head and drop. drop :: Int -> IterV el () drop 0 = Done () Empty drop n = Cont step where step (El _) = drop (n-1) step Empty = Cont step step EOF = Done () EOF head :: IterV el (Maybe el) head = Cont step w…