sequence関数
Traversable型クラスのmethodの1つ
sequenceAのMonad版
定義
code:hs
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
sequence = mapM id
traverseを2段階で具体化したような関数
traverse(Applicative)を1段階具体化すると、mapM(Monad)になり
mapMを1段階具体化して、sequenceになっている
だから、traverseの意味がわかれば、sequeceの意味は自動的にわかるmrsekut.icon
「かなり単純化したtraverse」ぐらいに解釈すれば良いmrsekut.icon
データ構造tと計算コンテナmを入れ替えているだけ
使用例
[[a]]を[[a]]へ
code:hs
sequence 1], 2, [3 -- 1,2,3
[Maybe a]をMaybe [a]へ
code:hs
sequence Just 5, Just 100 -- Just 5,100
sequence Just 5, Nothing, Just 100 -- Nothing
http://jutememo.blogspot.com/2010/03/haskell-sequecne-foldr.html