via para muslo mal inyectar inyeccion intramuscular gluteo dolor como brazo aplicada aguja haskell monad-transformers

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?