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