(m >>= f) >>= g = m >>= (\x -> f x >>= g)
fととの違いは何\x->f xですか??
同じタイプだと思いますa -> m b。しかし>>=、式の右辺の 2 番目は の型を\x->f xとして扱っているようm bです。何が悪いの?
(m >>= f) >>= g = m >>= (\x -> f x >>= g)
fととの違いは何\x->f xですか??
同じタイプだと思いますa -> m b。しかし>>=、式の右辺の 2 番目は の型を\x->f xとして扱っているようm bです。何が悪いの?
式fと\x -> f xdo は、ほとんどの場合、同じことを意味します。ただし、ラムダ式のスコープは可能な限り右に拡張されm >>= (\x -> (f x >>= g))ます。
タイプがm :: m a、f :: a -> m b、およびg :: b -> m cの場合、左側には が(m >>= f) :: m bあり、右側には があり(\x -> f x >>= g) :: a -> m cます。
したがって、2 つの式の違いは、式と(>>=)同様に演算が実行される順序であり、加算が実行される順序のみが異なります。1 + (2 + 3)(1 + 2) + 3
モナドの法則では、足し算と同様に、両方の答えが同じでなければなりません。