-- |Applicative combinators
module Prelate.Control.Applicative where

-- |Create a pair from two applicative values.
pairA ::
  Applicative f =>
  f a ->
  f b ->
  f (a, b)
pairA :: forall (f :: * -> *) a b. Applicative f => f a -> f b -> f (a, b)
pairA f a
fa f b
fb =
  (,) (a -> b -> (a, b)) -> f a -> f (b -> (a, b))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f a
fa f (b -> (a, b)) -> f b -> f (a, b)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f b
fb
{-# inline pairA #-}