いくつか持っていfoo :: Maybe Int
て、たとえば でバインドしたいとしbar :: Int -> MaybeT (Writer String) Int
ます。それを行う慣用的な方法は何でしょうか?
独自のliftMaybe
関数を定義して、次のように使用できます。
let liftMaybe = maybe (fail "Nothing") return in liftMaybe foo >>= bar
しかし、それを行うためのより慣用的な(または少なくとも簡潔な)方法はありますか?