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