haskell - para - inyeccion intramuscular muslo
Cómo inyectar un valor de Maybe en MaybeT (1)
MaybeT . return :: (Monad m) => Maybe a -> MaybeT m a
Creo que es una pena que no tenga un nombre estándar. Una forma más general es
liftMaybe :: (MonadPlus m) => Maybe a -> m a
liftMaybe = maybe mzero return
Lo cual es preferible al uso de fail . Acabo de ponerlo en un módulo conveniente en alguna parte.
Hayoo muestra una amplia variedad de nombres para esta función; De esos, maybeZero es mi favorito. liftMaybe , tan obvio como es, no aparece.
Digamos que tengo algunos foo :: Maybe Int y quiero enlazarlos, por ejemplo, con bar :: Int -> MaybeT (Writer String) Int , ¿cuál sería la forma idiomática de hacerlo?
Podría definir mi propia función liftMaybe y luego usarla, como:
let liftMaybe = maybe (fail "Nothing") return in liftMaybe foo >>= bar
¿Pero hay una manera más idiomática (o al menos concisa) de hacerlo?