ラップされたタイプを変更できることを知っているので、
f :: (a -> m b)
g :: (b -> m c)
f >>= g :: (a -> m c)
しかし、変更することは可能m
ですか? m
とが と の両方MonadError
で実装されている場合、どういうわけかそれらをチェーンできますか? 明らかに、それらを直接チェーンすることはできません。ただ、どちらの場合でも電話してしまう状況にあるのですが、それ以上の解決策が見つかりません。Either ErrorA
Either ErrorB
Left
show
case mightFail1 of
Left e -> show e
Right v -> either show doStuff mightFail2
明示的にチェックしなくても、最初のエラーで停止するというモナドの動作を適切に使用できません。