Haskellのモナド(5)
Haskellでは、型クラスであるモナドはモナドを表すものとして使われています。モナドはControl.MonadモジュールとPreludeの中で定義されています。
class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b fail :: String -> m a
return と bind演算子とは別に、(>>)とfailという2つの補助的な関数が定義されています。>>演算子は「それから」とか「そのあと」などと読み、
m >> n = m >>= ¥_ -> n
のように定義されていることが多いです。これは連続したモナディックアクションを実行したいが、最初のアクションの値を次のアクションに渡す必要がないときに使われます(IOモナドなどでよく使われます)。
printSomethingTwice :: String -> IO () printSomethingTwice str = putStrLn str >> putStrLn str
fail関数はdo記法において、パターンマッチに失敗した時に対処するための関数です。技術的な問題で作られた関数で、モナドとは関係がありません。自分のコード内で用いることは推奨されていません。