{- HLINT ignore -}

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

import Prelude (Applicative, Functor, Monad, fmap, pure, (<*>), (>>=))

-- |
andThen :: Monad m => (a -> m b) -> m a -> m b
andThen :: (a -> m b) -> m a -> m b
andThen a -> m b
b m a
a =
  m a
a m a -> (a -> m b) -> m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> m b
b

-- |
afterwards :: Monad m => m b -> m a -> m b
afterwards :: m b -> m a -> m b
afterwards m b
b m a
a =
  m a
a m a -> (a -> m b) -> m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\a
_ -> m b
b)

-- |
map :: Functor m => (a -> value) -> m a -> m value
map :: (a -> value) -> m a -> m value
map =
  (a -> value) -> m a -> m value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap

-- |
map2 :: Applicative m => (a -> b -> value) -> m a -> m b -> m value
map2 :: (a -> b -> value) -> m a -> m b -> m value
map2 a -> b -> value
func m a
a m b
b =
  (a -> b -> value) -> m (a -> b -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> value
func m (a -> b -> value) -> m a -> m (b -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> value) -> m b -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b

-- |
map3 :: Applicative m => (a -> b -> c -> value) -> m a -> m b -> m c -> m value
map3 :: (a -> b -> c -> value) -> m a -> m b -> m c -> m value
map3 a -> b -> c -> value
func m a
a m b
b m c
c =
  (a -> b -> c -> value) -> m (a -> b -> c -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> value
func m (a -> b -> c -> value) -> m a -> m (b -> c -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> value) -> m b -> m (c -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> value) -> m c -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c

-- |
map4 :: Applicative m => (a -> b -> c -> d -> value) -> m a -> m b -> m c -> m d -> m value
map4 :: (a -> b -> c -> d -> value) -> m a -> m b -> m c -> m d -> m value
map4 a -> b -> c -> d -> value
func m a
a m b
b m c
c m d
d =
  (a -> b -> c -> d -> value) -> m (a -> b -> c -> d -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> value
func m (a -> b -> c -> d -> value) -> m a -> m (b -> c -> d -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> value) -> m b -> m (c -> d -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> value) -> m c -> m (d -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> value) -> m d -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d

-- |
map5 :: Applicative m => (a -> b -> c -> d -> e -> value) -> m a -> m b -> m c -> m d -> m e -> m value
map5 :: (a -> b -> c -> d -> e -> value)
-> m a -> m b -> m c -> m d -> m e -> m value
map5 a -> b -> c -> d -> e -> value
func m a
a m b
b m c
c m d
d m e
e =
  (a -> b -> c -> d -> e -> value)
-> m (a -> b -> c -> d -> e -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> e -> value
func m (a -> b -> c -> d -> e -> value)
-> m a -> m (b -> c -> d -> e -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> e -> value) -> m b -> m (c -> d -> e -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> e -> value) -> m c -> m (d -> e -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> e -> value) -> m d -> m (e -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d m (e -> value) -> m e -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m e
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 :: (a -> b -> c -> d -> e -> f -> value)
-> m a -> m b -> m c -> m d -> m e -> m f -> m value
map6 a -> b -> c -> d -> e -> f -> value
func m a
a m b
b m c
c m d
d m e
e m f
f =
  (a -> b -> c -> d -> e -> f -> value)
-> m (a -> b -> c -> d -> e -> f -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> e -> f -> value
func m (a -> b -> c -> d -> e -> f -> value)
-> m a -> m (b -> c -> d -> e -> f -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> e -> f -> value)
-> m b -> m (c -> d -> e -> f -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> e -> f -> value) -> m c -> m (d -> e -> f -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> e -> f -> value) -> m d -> m (e -> f -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d m (e -> f -> value) -> m e -> m (f -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m e
e m (f -> value) -> m f -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m f
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 :: (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 a -> b -> c -> d -> e -> f -> g -> value
func m a
a m b
b m c
c m d
d m e
e m f
f m g
g =
  (a -> b -> c -> d -> e -> f -> g -> value)
-> m (a -> b -> c -> d -> e -> f -> g -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> e -> f -> g -> value
func m (a -> b -> c -> d -> e -> f -> g -> value)
-> m a -> m (b -> c -> d -> e -> f -> g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> e -> f -> g -> value)
-> m b -> m (c -> d -> e -> f -> g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> e -> f -> g -> value)
-> m c -> m (d -> e -> f -> g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> e -> f -> g -> value) -> m d -> m (e -> f -> g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d m (e -> f -> g -> value) -> m e -> m (f -> g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m e
e m (f -> g -> value) -> m f -> m (g -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m f
f m (g -> value) -> m g -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m g
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 :: (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 a -> b -> c -> d -> e -> f -> g -> h -> value
func m a
a m b
b m c
c m d
d m e
e m f
f m g
g m h
h =
  (a -> b -> c -> d -> e -> f -> g -> h -> value)
-> m (a -> b -> c -> d -> e -> f -> g -> h -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> e -> f -> g -> h -> value
func m (a -> b -> c -> d -> e -> f -> g -> h -> value)
-> m a -> m (b -> c -> d -> e -> f -> g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> e -> f -> g -> h -> value)
-> m b -> m (c -> d -> e -> f -> g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> e -> f -> g -> h -> value)
-> m c -> m (d -> e -> f -> g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> e -> f -> g -> h -> value)
-> m d -> m (e -> f -> g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d m (e -> f -> g -> h -> value) -> m e -> m (f -> g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m e
e m (f -> g -> h -> value) -> m f -> m (g -> h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m f
f m (g -> h -> value) -> m g -> m (h -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m g
g m (h -> value) -> m h -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m h
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 :: (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 a -> b -> c -> d -> e -> f -> g -> h -> i -> value
func m a
a m b
b m c
c m d
d m e
e m f
f m g
g m h
h m i
i =
  (a -> b -> c -> d -> e -> f -> g -> h -> i -> value)
-> m (a -> b -> c -> d -> e -> f -> g -> h -> i -> value)
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> b -> c -> d -> e -> f -> g -> h -> i -> value
func m (a -> b -> c -> d -> e -> f -> g -> h -> i -> value)
-> m a -> m (b -> c -> d -> e -> f -> g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
a m (b -> c -> d -> e -> f -> g -> h -> i -> value)
-> m b -> m (c -> d -> e -> f -> g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m b
b m (c -> d -> e -> f -> g -> h -> i -> value)
-> m c -> m (d -> e -> f -> g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m c
c m (d -> e -> f -> g -> h -> i -> value)
-> m d -> m (e -> f -> g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m d
d m (e -> f -> g -> h -> i -> value)
-> m e -> m (f -> g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m e
e m (f -> g -> h -> i -> value) -> m f -> m (g -> h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m f
f m (g -> h -> i -> value) -> m g -> m (h -> i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m g
g m (h -> i -> value) -> m h -> m (i -> value)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m h
h m (i -> value) -> m i -> m value
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m i
i

-- |
andMap :: Applicative m => m a -> m (a -> b) -> m b
andMap :: m a -> m (a -> b) -> m b
andMap m a
m m (a -> b)
mf =
  m (a -> b)
mf m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m a
m

-- |
blank :: Monad m => m ()
blank :: m ()
blank =
  () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()