lifting

  1. liftA1 :: forall a b f. Applicative f => (a -> b) -> f a -> f b
  2. liftA1 f a = pure f <*> a
  3. liftA2 :: forall a b c f. Applicative f => (a -> b -> c) -> f a -> f b -> f c
  4. liftA2 f a b = pure f <*> a <*> b
  5. liftM1 :: forall a b m. Monad m => (a -> b) -> m a -> m b
  6. liftM1 f ma = do
  7. a <- ma
  8. return (f a)
  9. liftM2 :: forall a b c m. Monad m => (a -> b -> c) -> m a -> m b -> m c
  10. liftM2 f ma mb = do
  11. a <- ma
  12. b <- mb
  13. return (f a b)