packages feed

cherry-core-alpha-0.1.0.0: src/Internal/Shortcut.hs

module Internal.Shortcut (map, map2, map3, map4, map5, map6, map7, map8, map9, andThen, afterwards) where

import Prelude ((<$>), (<*>), (>>=), Applicative, Monad, fmap, return)


{-| -}
andThen :: Monad m => (a -> m b) -> m a -> m b
andThen b a =
  a >>= b


{-| -}
afterwards :: Monad m => m b -> m a -> m b
afterwards b a =
  a >>= (\_ -> b)


{-| -}
map :: (Applicative m) => (a -> value) -> m a -> m value
map f a =
  fmap f a


{-| -}
map2 :: (Applicative m) => (a -> b -> value) -> m a -> m b -> m value
map2 func a b =
  func <$> a <*> b


{-| -}
map3 :: (Applicative m) => (a -> b -> c -> value) -> m a -> m b -> m c -> m value
map3 func a b c =
  func <$> a <*> b <*> c


{-| -}
map4 :: (Applicative m) => (a -> b -> c -> d -> value) -> m a -> m b -> m c -> m d -> m value
map4 func a b c d =
  func <$> a <*> b <*> c <*> d


{-| -}
map5 :: (Applicative m) => (a -> b -> c -> d -> e -> value) -> m a -> m b -> m c -> m d -> m e -> m value
map5 func a b c d e =
  func <$> a <*> b <*> c <*> d <*> e


{-| -}
map6 :: (Applicative m) => (a -> b -> c -> d -> e -> f -> value) -> m a -> m b -> m c -> m d -> m e -> m f -> m value
map6 func a b c d e f =
  func <$> a <*> b <*> c <*> d <*> e <*> f


{-| -}
map7 :: (Applicative m) => (a -> b -> c -> d -> e -> f -> g -> value) -> m a -> m b -> m c -> m d -> m e -> m f -> m g -> m value
map7 func a b c d e f g =
  func <$> a <*> b <*> c <*> d <*> e <*> f <*> g


{-| -}
map8 :: (Applicative m) => (a -> b -> c -> d -> e -> f -> g -> h -> value) -> m a -> m b -> m c -> m d -> m e -> m f -> m g -> m h -> m value
map8 func a b c d e f g h =
  func <$> a <*> b <*> c <*> d <*> e <*> f <*> g <*> h


{-| -}
map9 :: (Applicative m) => (a -> b -> c -> d -> e -> f -> g -> h -> i -> value) -> m a -> m b -> m c -> m d -> m e -> m f -> m g -> m h -> m i -> m value
map9 func a b c d e f g h i =
  func <$> a <*> b <*> c <*> d <*> e <*> f <*> g <*> h <*> i