Hatena::Grouphaskell

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

2008-03-05

[]MonadBaseとMonadIO 01:01

HaskellWikiを見ているとMonadBaseというものを見つけた。

class (Monad m,Monad b) => MonadBase b m where
  liftBase :: b a -> m a

説明を読むとMonadIOの一般化らしい。

class (Monad m) => MonadIO m where
    liftIO :: IO a -> m a

MonadIOの方が「このモナドはIOができます」というなら、こちらは「このモナドの操作はあのモナドの中でもできます」という感じだろうか。日ごろ使う分にはliftIO = lift . liftIOで済ますのが大半なので、一般化されているのはいいことだと思う。

あれ?もしかしてMonadTransいらない?*1

*1:標準のHaskellではそもそも複数の型を取るクラスが宣言できないけど

トラックバック - http://haskell.g.hatena.ne.jp/illillli/20080305