#sequence を [Maybe a] に対して使うと,
#たとえば sequence [Just 1, Nothing, Just 3] を評価したとき Just [1,3] じゃなくて Nothing に評価されてしまいます
#同じように、[IO (Maybe a)] に対して sequence した場合も、リストの中のアクションが全部走ってしまいます
#Prelude Control.Monad> (return . foldr mplus mzero =<<) . sequence $ [print 1 >> return (Just 1), print 2 >> return (Just 2), print 3 >> return Nothing]
1
2
3
Just 1
#ああ。勘違い。
#そういう議論だったですね。
#何年も前に、どこかでこの手の議論があったような気がしたけど。どういうものかわすれた。
#import Monad
iomplus :: MonadPlus m => IO (m a) -> IO (m a) -> IO (m a)
m `iomplus` m' = m >>= (m' >>=) . (return .) . mplus
iomsum :: MonadPlus m => [IO (m a)] -> IO (m a)
iomsum = foldr iomplus (return mzero)
#年末の掃除をしていたら2002年に印刷した「なぜ関数プログラミングは重要か」(和訳版)が出てきました。(当時はまだ nobsun とも面識がなく、当然この和訳をしたのが nobsun だと認識していませんでした)
#typoを十数個見つけたまま報告していなかったのですがこの機会に報告したいと思います。どこで報告するのがよいでしょうか。
#たいした量でもないのでここでしましょうか?
#sampou.org のwikiに適当なページを作成してもらえると嬉しいです。> [1..100]>>=pen
#あ、反応早い。起きたんですね。
#私は今から寝ます。(w
#ページ作成了解です。寝て起きたら作ります。
#「なぜ関数プログラミングは重要か」wo
#「なぜ関数プログラミングは重要か」を読んで感心して訳者にお礼のメールをしようと思っていたことを思い出しました(メールしなかったけど(w)