Скажем, у меня есть foo :: Maybe Int, и я хочу привязать его, например, с помощью bar :: Int -> MaybeT (Writer String) Int, каков был бы идиоматический способ сделать это?
Я мог бы определить свою собственную функцию liftMaybe, а затем использовать ее, например:
let liftMaybe = maybe (fail "Nothing") return in liftMaybe foo >>= bar
Но есть ли более идиоматический (или, по крайней мере, краткий) способ сделать это?