sop-core-0.5.0.2: True Sums of Products

Safe Haskell | None
Language | Haskell2010

Data.SOP.BasicFunctors

Contents

- Basic functors
- Mapping functions

Description

Basic functors.

Definitions of the type-level equivalents of `const`, `id`, and (`.`), and a definition of the lifted function space.

These datatypes are generally useful, but in this library, they're primarily used as parameters for the `NP`, `NS`, `POP`, and `SOP` types.

We define own variants of `Const`, `Identity` and `Compose` for various reasons.

- `Const` and `Compose` become kind polymorphic only in `base-4.9.0.0` (`transformers-0.5.0.0`).
- Shorter names are convenient, and pattern synonyms aren't (yet) powerful enough, particularly exhaustiveness check doesn't work properly. See https://ghc.haskell.org/trac/ghc/ticket/8779.

Synopsis

- newtype K a (b :: k) = K a
- unK :: forall {k} a (b :: k). K a b -> a
- newtype I a = I a
- unI :: I a -> a
- newtype ((f :: l -> Type) :.: (g :: k -> l)) (p :: k) = Comp (f (g p))
- unComp :: forall {l} {k} f (g :: k -> l) (p :: k). (f :.: g) p -> f (g p)
- mapII :: (a -> b) -> I a -> I b
- mapIK :: forall {k} a b (c :: k). (a -> b) -> I a -> K b c
- mapKI :: forall {k} a b (c :: k). (a -> b) -> K a c -> I b
- mapKK :: forall {k1} {k2} a b (c :: k1) (d :: k2). (a -> b) -> K a c -> K b d
- mapIII :: (a -> b -> c) -> I a -> I b -> I c
- mapIIK :: forall {k} a b c (d :: k). (a -> b -> c) -> I a -> I b -> K c d
- mapIKI :: forall {k} a b c (d :: k). (a -> b -> c) -> I a -> K b d -> I c
- mapIKK :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> I a -> K b d -> K c e
- mapKII :: forall {k} a b c (d :: k). (a -> b -> c) -> K a d -> I b -> I c
- mapKIK :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> K a d -> I b -> K c e
- mapKKI :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> K a d -> K b e -> I c
- mapKKK :: forall {k1} {k2} {k3} a b c (d :: k1) (e :: k2) (f :: k3). (a -> b -> c) -> K a d -> K b e -> K c f

# Basic functors

newtype K a (b :: k) #

The constant type functor.

Like `Constant`, but kind-polymorphic in its second argument and with a shorter name.

Constructors

K a |

#### Instances

Instances details

Eq2 (K :: Type -> Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftEq2 :: (a -> b -> Bool) -> (c -> d -> Bool) -> K a c -> K b d -> Bool #
Ord2 (K :: Type -> Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> K a c -> K b d -> Ordering #
Read2 (K :: Type -> Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftReadsPrec2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> Int -> ReadS (K a b) # liftReadList2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> ReadS [K a b] # liftReadPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (K a b) # liftReadListPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [K a b] #
Show2 (K :: Type -> Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftShowsPrec2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> Int -> K a b -> ShowS # liftShowList2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> [K a b] -> ShowS #
NFData2 (K :: Type -> Type -> Type) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftRnf2 :: (a -> ()) -> (b -> ()) -> K a b -> () #
Eq a => Eq1 (K a :: Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftEq :: (a0 -> b -> Bool) -> K a a0 -> K a b -> Bool #
Ord a => Ord1 (K a :: Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftCompare :: (a0 -> b -> Ordering) -> K a a0 -> K a b -> Ordering #
Read a => Read1 (K a :: Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (K a a0) # liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [K a a0] # liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (K a a0) # liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [K a a0] #
Show a => Show1 (K a :: Type -> Type) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftShowsPrec :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> Int -> K a a0 -> ShowS # liftShowList :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> [K a a0] -> ShowS #
NFData a => NFData1 (K a :: Type -> Type) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftRnf :: (a0 -> ()) -> K a a0 -> () #
Monoid a => Applicative (K a :: Type -> Type) # |
Instance details Defined in Data.SOP.BasicFunctors Methods pure :: a0 -> K a a0 # (<*>) :: K a (a0 -> b) -> K a a0 -> K a b # liftA2 :: (a0 -> b -> c) -> K a a0 -> K a b -> K a c # (*>) :: K a a0 -> K a b -> K a b # (<*) :: K a a0 -> K a b -> K a a0 #
Functor (K a :: Type -> Type) # |
Instance details Defined in Data.SOP.BasicFunctors Methods fmap :: (a0 -> b) -> K a a0 -> K a b # (<$) :: a0 -> K a b -> K a a0 #
Foldable (K a :: Type -> Type) # |
Instance details Defined in Data.SOP.BasicFunctors Methods fold :: Monoid m => K a m -> m # foldMap :: Monoid m => (a0 -> m) -> K a a0 -> m # foldMap' :: Monoid m => (a0 -> m) -> K a a0 -> m # foldr :: (a0 -> b -> b) -> b -> K a a0 -> b # foldr' :: (a0 -> b -> b) -> b -> K a a0 -> b # foldl :: (b -> a0 -> b) -> b -> K a a0 -> b # foldl' :: (b -> a0 -> b) -> b -> K a a0 -> b # foldr1 :: (a0 -> a0 -> a0) -> K a a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> K a a0 -> a0 # toList :: K a a0 -> [a0] # null :: K a a0 -> Bool # length :: K a a0 -> Int # elem :: Eq a0 => a0 -> K a a0 -> Bool # maximum :: Ord a0 => K a a0 -> a0 # minimum :: Ord a0 => K a a0 -> a0 # sum :: Num a0 => K a a0 -> a0 # product :: Num a0 => K a a0 -> a0 #
Traversable (K a :: Type -> Type) # |
Instance details Defined in Data.SOP.BasicFunctors Methods traverse :: Applicative f => (a0 -> f b) -> K a a0 -> f (K a b) # sequenceA :: Applicative f => K a (f a0) -> f (K a a0) # mapM :: Monad m => (a0 -> m b) -> K a a0 -> m (K a b) # sequence :: Monad m => K a (m a0) -> m (K a a0) #
NFData a => NFData (K a b) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods rnf :: K a b -> () #
Monoid a => Monoid (K a b) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods mempty :: K a b # mappend :: K a b -> K a b -> K a b # mconcat :: [K a b] -> K a b #
Semigroup a => Semigroup (K a b) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods (<>) :: K a b -> K a b -> K a b # sconcat :: NonEmpty (K a b) -> K a b # stimes :: Integral b0 => b0 -> K a b -> K a b #
Generic (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors Associated Types
type Rep (K a b) |
Instance details Defined in Data.SOP.BasicFunctors type Rep (K a b) = D1 ('MetaData "K" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "K" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
Methods from :: K a b -> Rep (K a b) x # to :: Rep (K a b) x -> K a b #
Read a => Read (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors Methods readsPrec :: Int -> ReadS (K a b) # readList :: ReadS [K a b] # readPrec :: ReadPrec (K a b) # readListPrec :: ReadPrec [K a b] #
Show a => Show (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors Methods showsPrec :: Int -> K a b -> ShowS # show :: K a b -> String # showList :: [K a b] -> ShowS #
Eq a => Eq (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors Methods (==) :: K a b -> K a b -> Bool # (/=) :: K a b -> K a b -> Bool #
Ord a => Ord (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors Methods compare :: K a b -> K a b -> Ordering # (<) :: K a b -> K a b -> Bool # (<=) :: K a b -> K a b -> Bool # (>) :: K a b -> K a b -> Bool # (>=) :: K a b -> K a b -> Bool # max :: K a b -> K a b -> K a b # min :: K a b -> K a b -> K a b #
type Rep (K a b) # |
Instance details Defined in Data.SOP.BasicFunctors type Rep (K a b) = D1 ('MetaData "K" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "K" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

unK :: forall {k} a (b :: k). K a b -> a #

Extract the contents of a `K` value.

newtype I a #

The identity type functor.

Like `Identity`, but with a shorter name.

Constructors

I a |

#### Instances

Instances details

Eq1 I # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftEq :: (a -> b -> Bool) -> I a -> I b -> Bool #
Ord1 I # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftCompare :: (a -> b -> Ordering) -> I a -> I b -> Ordering #
Read1 I # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (I a) # liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [I a] # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (I a) # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [I a] #
Show1 I # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> I a -> ShowS # liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [I a] -> ShowS #
NFData1 I # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftRnf :: (a -> ()) -> I a -> () #
Applicative I # |
Instance details Defined in Data.SOP.BasicFunctors Methods pure :: a -> I a # (<*>) :: I (a -> b) -> I a -> I b # liftA2 :: (a -> b -> c) -> I a -> I b -> I c # (*>) :: I a -> I b -> I b # (<*) :: I a -> I b -> I a #
Functor I # |
Instance details Defined in Data.SOP.BasicFunctors Methods fmap :: (a -> b) -> I a -> I b # (<$) :: a -> I b -> I a #
Monad I # |
Instance details Defined in Data.SOP.BasicFunctors Methods (>>=) :: I a -> (a -> I b) -> I b # (>>) :: I a -> I b -> I b # return :: a -> I a #
Foldable I # |
Instance details Defined in Data.SOP.BasicFunctors Methods fold :: Monoid m => I m -> m # foldMap :: Monoid m => (a -> m) -> I a -> m # foldMap' :: Monoid m => (a -> m) -> I a -> m # foldr :: (a -> b -> b) -> b -> I a -> b # foldr' :: (a -> b -> b) -> b -> I a -> b # foldl :: (b -> a -> b) -> b -> I a -> b # foldl' :: (b -> a -> b) -> b -> I a -> b # foldr1 :: (a -> a -> a) -> I a -> a # foldl1 :: (a -> a -> a) -> I a -> a # toList :: I a -> [a] # null :: I a -> Bool # length :: I a -> Int # elem :: Eq a => a -> I a -> Bool # maximum :: Ord a => I a -> a # minimum :: Ord a => I a -> a # sum :: Num a => I a -> a # product :: Num a => I a -> a #
Traversable I # |
Instance details Defined in Data.SOP.BasicFunctors Methods traverse :: Applicative f => (a -> f b) -> I a -> f (I b) # sequenceA :: Applicative f => I (f a) -> f (I a) # mapM :: Monad m => (a -> m b) -> I a -> m (I b) # sequence :: Monad m => I (m a) -> m (I a) #
NFData a => NFData (I a) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods rnf :: I a -> () #
Monoid a => Monoid (I a) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods mempty :: I a # mappend :: I a -> I a -> I a # mconcat :: [I a] -> I a #
Semigroup a => Semigroup (I a) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods (<>) :: I a -> I a -> I a # sconcat :: NonEmpty (I a) -> I a # stimes :: Integral b => b -> I a -> I a #
Generic (I a) # |
Instance details Defined in Data.SOP.BasicFunctors Associated Types
type Rep (I a) |
Instance details Defined in Data.SOP.BasicFunctors type Rep (I a) = D1 ('MetaData "I" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "I" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
Methods from :: I a -> Rep (I a) x # to :: Rep (I a) x -> I a #
Read a => Read (I a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods readsPrec :: Int -> ReadS (I a) # readList :: ReadS [I a] # readPrec :: ReadPrec (I a) # readListPrec :: ReadPrec [I a] #
Show a => Show (I a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods showsPrec :: Int -> I a -> ShowS # show :: I a -> String # showList :: [I a] -> ShowS #
Eq a => Eq (I a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods (==) :: I a -> I a -> Bool # (/=) :: I a -> I a -> Bool #
Ord a => Ord (I a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods compare :: I a -> I a -> Ordering # (<) :: I a -> I a -> Bool # (<=) :: I a -> I a -> Bool # (>) :: I a -> I a -> Bool # (>=) :: I a -> I a -> Bool # max :: I a -> I a -> I a # min :: I a -> I a -> I a #
type Rep (I a) # |
Instance details Defined in Data.SOP.BasicFunctors type Rep (I a) = D1 ('MetaData "I" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "I" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

unI :: I a -> a #

Extract the contents of an `I` value.

newtype ((f :: l -> Type) :.: (g :: k -> l)) (p :: k) infixr 7 #

Composition of functors.

Like `Compose`, but kind-polymorphic and with a shorter name.

Constructors

Comp (f (g p)) |

#### Instances

Instances details

(Eq1 f, Eq1 g) => Eq1 (f :.: g) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftEq :: (a -> b -> Bool) -> (f :.: g) a -> (f :.: g) b -> Bool #
(Ord1 f, Ord1 g) => Ord1 (f :.: g) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftCompare :: (a -> b -> Ordering) -> (f :.: g) a -> (f :.: g) b -> Ordering #
(Read1 f, Read1 g) => Read1 (f :.: g) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS ((f :.: g) a) # liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [(f :.: g) a] # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec ((f :.: g) a) # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [(f :.: g) a] #
(Show1 f, Show1 g) => Show1 (f :.: g) # | Since: 0.2.4.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> (f :.: g) a -> ShowS # liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [(f :.: g) a] -> ShowS #
(NFData1 f, NFData1 g) => NFData1 (f :.: g) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods liftRnf :: (a -> ()) -> (f :.: g) a -> () #
(Applicative f, Applicative g) => Applicative (f :.: g) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods pure :: a -> (f :.: g) a # (<*>) :: (f :.: g) (a -> b) -> (f :.: g) a -> (f :.: g) b # liftA2 :: (a -> b -> c) -> (f :.: g) a -> (f :.: g) b -> (f :.: g) c # (*>) :: (f :.: g) a -> (f :.: g) b -> (f :.: g) b # (<*) :: (f :.: g) a -> (f :.: g) b -> (f :.: g) a #
(Functor f, Functor g) => Functor (f :.: g) # |
Instance details Defined in Data.SOP.BasicFunctors Methods fmap :: (a -> b) -> (f :.: g) a -> (f :.: g) b # (<$) :: a -> (f :.: g) b -> (f :.: g) a #
(Foldable f, Foldable g) => Foldable (f :.: g) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods fold :: Monoid m => (f :.: g) m -> m # foldMap :: Monoid m => (a -> m) -> (f :.: g) a -> m # foldMap' :: Monoid m => (a -> m) -> (f :.: g) a -> m # foldr :: (a -> b -> b) -> b -> (f :.: g) a -> b # foldr' :: (a -> b -> b) -> b -> (f :.: g) a -> b # foldl :: (b -> a -> b) -> b -> (f :.: g) a -> b # foldl' :: (b -> a -> b) -> b -> (f :.: g) a -> b # foldr1 :: (a -> a -> a) -> (f :.: g) a -> a # foldl1 :: (a -> a -> a) -> (f :.: g) a -> a # toList :: (f :.: g) a -> [a] # null :: (f :.: g) a -> Bool # length :: (f :.: g) a -> Int # elem :: Eq a => a -> (f :.: g) a -> Bool # maximum :: Ord a => (f :.: g) a -> a # minimum :: Ord a => (f :.: g) a -> a # sum :: Num a => (f :.: g) a -> a # product :: Num a => (f :.: g) a -> a #
(Traversable f, Traversable g) => Traversable (f :.: g) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods traverse :: Applicative f0 => (a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) # sequenceA :: Applicative f0 => (f :.: g) (f0 a) -> f0 ((f :.: g) a) # mapM :: Monad m => (a -> m b) -> (f :.: g) a -> m ((f :.: g) b) # sequence :: Monad m => (f :.: g) (m a) -> m ((f :.: g) a) #
NFData (f (g a)) => NFData ((f :.: g) a) # | Since: 0.2.5.0
Instance details Defined in Data.SOP.BasicFunctors Methods rnf :: (f :.: g) a -> () #
Monoid (f (g x)) => Monoid ((f :.: g) x) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods mempty :: (f :.: g) x # mappend :: (f :.: g) x -> (f :.: g) x -> (f :.: g) x # mconcat :: [(f :.: g) x] -> (f :.: g) x #
Semigroup (f (g x)) => Semigroup ((f :.: g) x) # | Since: 0.4.0.0
Instance details Defined in Data.SOP.BasicFunctors Methods (<>) :: (f :.: g) x -> (f :.: g) x -> (f :.: g) x # sconcat :: NonEmpty ((f :.: g) x) -> (f :.: g) x # stimes :: Integral b => b -> (f :.: g) x -> (f :.: g) x #
Generic ((f :.: g) p) # |
Instance details Defined in Data.SOP.BasicFunctors Associated Types
type Rep ((f :.: g) p) |
Instance details Defined in Data.SOP.BasicFunctors type Rep ((f :.: g) p) = D1 ('MetaData ":.:" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "Comp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (g p)))))
Methods from :: (f :.: g) p -> Rep ((f :.: g) p) x # to :: Rep ((f :.: g) p) x -> (f :.: g) p #
(Read1 f, Read1 g, Read a) => Read ((f :.: g) a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods readsPrec :: Int -> ReadS ((f :.: g) a) # readList :: ReadS [(f :.: g) a] # readPrec :: ReadPrec ((f :.: g) a) # readListPrec :: ReadPrec [(f :.: g) a] #
(Show1 f, Show1 g, Show a) => Show ((f :.: g) a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods showsPrec :: Int -> (f :.: g) a -> ShowS # show :: (f :.: g) a -> String # showList :: [(f :.: g) a] -> ShowS #
(Eq1 f, Eq1 g, Eq a) => Eq ((f :.: g) a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods (==) :: (f :.: g) a -> (f :.: g) a -> Bool # (/=) :: (f :.: g) a -> (f :.: g) a -> Bool #
(Ord1 f, Ord1 g, Ord a) => Ord ((f :.: g) a) # |
Instance details Defined in Data.SOP.BasicFunctors Methods compare :: (f :.: g) a -> (f :.: g) a -> Ordering # (<) :: (f :.: g) a -> (f :.: g) a -> Bool # (<=) :: (f :.: g) a -> (f :.: g) a -> Bool # (>) :: (f :.: g) a -> (f :.: g) a -> Bool # (>=) :: (f :.: g) a -> (f :.: g) a -> Bool # max :: (f :.: g) a -> (f :.: g) a -> (f :.: g) a # min :: (f :.: g) a -> (f :.: g) a -> (f :.: g) a #
type Rep ((f :.: g) p) # |
Instance details Defined in Data.SOP.BasicFunctors type Rep ((f :.: g) p) = D1 ('MetaData ":.:" "Data.SOP.BasicFunctors" "sop-core-0.5.0.2-3pPdHSIvhiEBpoNP4ADc2R" 'True) (C1 ('MetaCons "Comp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (g p)))))

unComp :: forall {l} {k} f (g :: k -> l) (p :: k). (f :.: g) p -> f (g p) #

Extract the contents of a `Comp` value.

# Mapping functions

mapII :: (a -> b) -> I a -> I b #

Lift the given function.

Since: 0.2.5.0

mapIK :: forall {k} a b (c :: k). (a -> b) -> I a -> K b c #

Lift the given function.

Since: 0.2.5.0

mapKI :: forall {k} a b (c :: k). (a -> b) -> K a c -> I b #

Lift the given function.

Since: 0.2.5.0

mapKK :: forall {k1} {k2} a b (c :: k1) (d :: k2). (a -> b) -> K a c -> K b d #

Lift the given function.

Since: 0.2.5.0

mapIII :: (a -> b -> c) -> I a -> I b -> I c #

Lift the given function.

Since: 0.2.5.0

mapIIK :: forall {k} a b c (d :: k). (a -> b -> c) -> I a -> I b -> K c d #

Lift the given function.

Since: 0.2.5.0

mapIKI :: forall {k} a b c (d :: k). (a -> b -> c) -> I a -> K b d -> I c #

Lift the given function.

Since: 0.2.5.0

mapIKK :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> I a -> K b d -> K c e #

Lift the given function.

Since: 0.2.5.0

mapKII :: forall {k} a b c (d :: k). (a -> b -> c) -> K a d -> I b -> I c #

Lift the given function.

Since: 0.2.5.0

mapKIK :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> K a d -> I b -> K c e #

Lift the given function.

Since: 0.2.5.0

mapKKI :: forall {k1} {k2} a b c (d :: k1) (e :: k2). (a -> b -> c) -> K a d -> K b e -> I c #

Lift the given function.

Since: 0.2.5.0

mapKKK :: forall {k1} {k2} {k3} a b c (d :: k1) (e :: k2) (f :: k3). (a -> b -> c) -> K a d -> K b e -> K c f #

Lift the given function.

Since: 0.2.5.0