Hatena::Grouphaskell

[ pred x | x <- "Ibtlfmm!ojllj" ] RSSフィード

2009-05-16

ジェネレータ

| 16:04

PythonRubyのジェネレータのような仕組みを提供するモナドを書いた。

YieldモナドがあればPauseモナドはいらない。

import PauseMonad

main :: IO ()
main = tracePauseT $ do
  liftIO $ print 1
  pause
  liftIO $ print 2
  pause
  liftIO $ print 3
  pause
  liftIO $ print 4
import YieldMonad

main :: IO ()
main = traceYieldT $ do
  liftIO $ print 1
  yield "hoge"
  liftIO $ print 2
  yield "fuga"
  liftIO $ print 3
  yield "foo"
  liftIO $ print 4
トラックバック - http://haskell.g.hatena.ne.jp/illillli/20090516