liftM2とliftA2という関数について質問です。
liftM2とliftA2の定義は以下のようになっており
Applicativeに包まれているかMonadに包まれているかが違いとなる印象を受けますが、liftA2で動くがliftM2では動かない、またはliftM2では動くがliftA2では動かない簡単な具体例はありますでしょうか?(ApplicativeではあるがMonadではない例とも言える?)
ふと気になり質問させていただきました。ご回答お待ちしております。
liftM2とliftA2の定義は以下のようになっており
liftA2 :: (a -> b -> c) -> f a -> f b -> f c liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
Applicativeに包まれているかMonadに包まれているかが違いとなる印象を受けますが、liftA2で動くがliftM2では動かない、またはliftM2では動くがliftA2では動かない簡単な具体例はありますでしょうか?(ApplicativeではあるがMonadではない例とも言える?)
ふと気になり質問させていただきました。ご回答お待ちしております。