でリターンを使用すると、これは>>=
のタイプです:Haskellのバインド演算子(>> =)
(>>=) :: Monad m => m a -> (a -> m b) -> m b
それは2番目の引数としての機能を必要とします。
そして、ここではreturn
のタイプです:
return :: Monad m => a -> m a
戻りm a
そして、これは明らかにチェックを入力します。
(>>) :: Monad m => m a -> m b -> m b
x >> y = x >>= (\_ -> y)
をしかし、なぜ次の型チェックを行い、と同様に機能します上記のコード?ここでreturn y
(>>) :: Monad m => m a -> m b -> m b
x >> y = x >>= return y
はタイプm a
でもないa -> m a
ことになっています。ではなぜそれは機能しますか?
関数の 'return'は' const'です – Bergi