module Grisette.Lib.Control.Applicative
(
mrgPureWithStrategy,
mrgPure,
(.<*>),
mrgLiftA2,
(.*>),
(.<*),
mrgEmpty,
(.<|>),
mrgSome,
mrgMany,
(.<$>),
(.<$),
(.<**>),
mrgLiftA,
mrgLiftA3,
mrgOptional,
mrgAsum,
)
where
import Control.Applicative (Alternative)
import Grisette.Internal.Core.Data.Class.Mergeable (Mergeable, MergingStrategy)
import Grisette.Internal.Core.Data.Class.TryMerge (TryMerge)
import Grisette.Lib.Data.Functor ((.<$), (.<$>))
import qualified Grisette.Unified.Lib.Control.Applicative as Unified
mrgPureWithStrategy ::
(TryMerge m, Applicative m) => MergingStrategy a -> a -> m a
mrgPureWithStrategy :: forall (m :: * -> *) a.
(TryMerge m, Applicative m) =>
MergingStrategy a -> a -> m a
mrgPureWithStrategy = MergingStrategy a -> a -> m a
forall (m :: * -> *) a.
(TryMerge m, Applicative m) =>
MergingStrategy a -> a -> m a
Unified.mrgPureWithStrategy
{-# INLINE mrgPureWithStrategy #-}
mrgPure :: (TryMerge m, Applicative m, Mergeable a) => a -> m a
mrgPure :: forall (m :: * -> *) a.
(TryMerge m, Applicative m, Mergeable a) =>
a -> m a
mrgPure = a -> m a
forall (m :: * -> *) a.
(TryMerge m, Applicative m, Mergeable a) =>
a -> m a
Unified.mrgPure
{-# INLINE mrgPure #-}
infixl 4 .<*>
(.<*>) ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f (a -> b) ->
f a ->
f b
.<*> :: forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f (a -> b) -> f a -> f b
(.<*>) = f (a -> b) -> f a -> f b
forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f (a -> b) -> f a -> f b
(Unified..<*>)
{-# INLINE (.<*>) #-}
mrgLiftA2 ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b, Mergeable c) =>
(a -> b -> c) ->
f a ->
f b ->
f c
mrgLiftA2 :: forall (f :: * -> *) a b c.
(Applicative f, TryMerge f, Mergeable a, Mergeable b,
Mergeable c) =>
(a -> b -> c) -> f a -> f b -> f c
mrgLiftA2 = (a -> b -> c) -> f a -> f b -> f c
forall (f :: * -> *) a b c.
(Applicative f, TryMerge f, Mergeable a, Mergeable b,
Mergeable c) =>
(a -> b -> c) -> f a -> f b -> f c
Unified.mrgLiftA2
{-# INLINE mrgLiftA2 #-}
infixl 4 .*>
(.*>) ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b) => f a -> f b -> f b
.*> :: forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f b -> f b
(.*>) = f a -> f b -> f b
forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f b -> f b
(Unified..*>)
{-# INLINE (.*>) #-}
infixl 4 .<*
(.<*) ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b) => f a -> f b -> f a
.<* :: forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f b -> f a
(.<*) = f a -> f b -> f a
forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f b -> f a
(Unified..<*)
{-# INLINE (.<*) #-}
mrgEmpty :: (Alternative f, TryMerge f, Mergeable a) => f a
mrgEmpty :: forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a
mrgEmpty = f a
forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a
Unified.mrgEmpty
{-# INLINE mrgEmpty #-}
infixl 3 .<|>
(.<|>) :: (Alternative f, TryMerge f, Mergeable a) => f a -> f a -> f a
.<|> :: forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f a -> f a
(.<|>) = f a -> f a -> f a
forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f a -> f a
(Unified..<|>)
{-# INLINE (.<|>) #-}
mrgSome :: (Alternative f, TryMerge f, Mergeable a) => f a -> f [a]
mrgSome :: forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f [a]
mrgSome = f a -> f [a]
forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f [a]
Unified.mrgSome
{-# INLINE mrgSome #-}
mrgMany :: (Alternative f, TryMerge f, Mergeable a) => f a -> f [a]
mrgMany :: forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f [a]
mrgMany = f a -> f [a]
forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f [a]
Unified.mrgMany
{-# INLINE mrgMany #-}
infixl 4 .<**>
(.<**>) ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a ->
f (a -> b) ->
f b
.<**> :: forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f (a -> b) -> f b
(.<**>) = f a -> f (a -> b) -> f b
forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
f a -> f (a -> b) -> f b
(Unified..<**>)
{-# INLINE (.<**>) #-}
mrgLiftA ::
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
(a -> b) ->
f a ->
f b
mrgLiftA :: forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
(a -> b) -> f a -> f b
mrgLiftA = (a -> b) -> f a -> f b
forall (f :: * -> *) a b.
(Applicative f, TryMerge f, Mergeable a, Mergeable b) =>
(a -> b) -> f a -> f b
Unified.mrgLiftA
{-# INLINE mrgLiftA #-}
mrgLiftA3 ::
( Applicative f,
TryMerge f,
Mergeable a,
Mergeable b,
Mergeable c,
Mergeable d
) =>
(a -> b -> c -> d) ->
f a ->
f b ->
f c ->
f d
mrgLiftA3 :: forall (f :: * -> *) a b c d.
(Applicative f, TryMerge f, Mergeable a, Mergeable b, Mergeable c,
Mergeable d) =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
mrgLiftA3 = (a -> b -> c -> d) -> f a -> f b -> f c -> f d
forall (f :: * -> *) a b c d.
(Applicative f, TryMerge f, Mergeable a, Mergeable b, Mergeable c,
Mergeable d) =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
Unified.mrgLiftA3
{-# INLINE mrgLiftA3 #-}
mrgOptional ::
(Alternative f, TryMerge f, Mergeable a) =>
f a ->
f (Maybe a)
mrgOptional :: forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f (Maybe a)
mrgOptional = f a -> f (Maybe a)
forall (f :: * -> *) a.
(Alternative f, TryMerge f, Mergeable a) =>
f a -> f (Maybe a)
Unified.mrgOptional
{-# INLINE mrgOptional #-}
mrgAsum ::
(Alternative f, TryMerge f, Mergeable a, Foldable t) => t (f a) -> f a
mrgAsum :: forall (f :: * -> *) a (t :: * -> *).
(Alternative f, TryMerge f, Mergeable a, Foldable t) =>
t (f a) -> f a
mrgAsum = t (f a) -> f a
forall (f :: * -> *) a (t :: * -> *).
(Alternative f, TryMerge f, Mergeable a, Foldable t) =>
t (f a) -> f a
Unified.mrgAsum
{-# INLINE mrgAsum #-}