kind-generics-0.3.0.0: Generic programming in GHC style for arbitrary kinds and GADTs.

Safe HaskellNone
LanguageHaskell2010

Generics.Kind

Contents

Description

Main module of kind-generics. Please refer to the README file for documentation on how to use this package.

Synopsis

Documentation

Generic representation types

data ((f :: k -> Type) :+: (g :: k -> Type)) (p :: k) :: forall k. (k -> Type) -> (k -> Type) -> k -> Type infixr 5 #

Sums: encode choice between constructors

Constructors

L1 (f p) 
R1 (g p) 
Instances
Generic1 (f :+: g :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (f :+: g) :: k -> Type #

Methods

from1 :: (f :+: g) a -> Rep1 (f :+: g) a #

to1 :: Rep1 (f :+: g) a -> (f :+: g) a #

(Conv f f' tys, Conv g g' tys) => Conv (f :+: g) (f' :+: g' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (f' :+: g') tys -> (f :+: g) a Source #

toKindGenerics :: (f :+: g) a -> (f' :+: g') tys Source #

(Functor f, Functor g) => Functor (f :+: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

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: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => (f :+: g) m -> 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: base-4.9.0.0

Instance details

Defined in Data.Traversable

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) #

(Eq (f p), Eq (g p)) => Eq ((f :+: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

(==) :: (f :+: g) p -> (f :+: g) p -> Bool #

(/=) :: (f :+: g) p -> (f :+: g) p -> Bool #

(Ord (f p), Ord (g p)) => Ord ((f :+: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

compare :: (f :+: g) p -> (f :+: g) p -> Ordering #

(<) :: (f :+: g) p -> (f :+: g) p -> Bool #

(<=) :: (f :+: g) p -> (f :+: g) p -> Bool #

(>) :: (f :+: g) p -> (f :+: g) p -> Bool #

(>=) :: (f :+: g) p -> (f :+: g) p -> Bool #

max :: (f :+: g) p -> (f :+: g) p -> (f :+: g) p #

min :: (f :+: g) p -> (f :+: g) p -> (f :+: g) p #

(Read (f p), Read (g p)) => Read ((f :+: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

readsPrec :: Int -> ReadS ((f :+: g) p) #

readList :: ReadS [(f :+: g) p] #

readPrec :: ReadPrec ((f :+: g) p) #

readListPrec :: ReadPrec [(f :+: g) p] #

(Show (f p), Show (g p)) => Show ((f :+: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> (f :+: g) p -> ShowS #

show :: (f :+: g) p -> String #

showList :: [(f :+: g) p] -> ShowS #

Generic ((f :+: g) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep ((f :+: g) p) :: Type -> Type #

Methods

from :: (f :+: g) p -> Rep ((f :+: g) p) x #

to :: Rep ((f :+: g) p) x -> (f :+: g) p #

type SubstRep (f :+: g :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (f :+: g :: LoT (t -> k) -> Type) (x :: t) = SubstRep f x :+: SubstRep g x
type Rep1 (f :+: g :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep ((f :+: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

data ((f :: k -> Type) :*: (g :: k -> Type)) (p :: k) :: forall k. (k -> Type) -> (k -> Type) -> k -> Type infixr 6 #

Products: encode multiple arguments to constructors

Constructors

(f p) :*: (g p) infixr 6 
Instances
Generic1 (f :*: g :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (f :*: g) :: k -> Type #

Methods

from1 :: (f :*: g) a -> Rep1 (f :*: g) a #

to1 :: Rep1 (f :*: g) a -> (f :*: g) a #

(Conv f f' tys, Conv g g' tys) => Conv (f :*: g) (f' :*: g' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (f' :*: g') tys -> (f :*: g) a Source #

toKindGenerics :: (f :*: g) a -> (f' :*: g') tys Source #

(Monad f, Monad g) => Monad (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b #

(>>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b #

return :: a -> (f :*: g) a #

fail :: String -> (f :*: g) a #

(Functor f, Functor g) => Functor (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :*: g) a -> (f :*: g) b #

(<$) :: a -> (f :*: g) b -> (f :*: g) a #

(Applicative f, Applicative g) => Applicative (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

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 #

(Foldable f, Foldable g) => Foldable (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => (f :*: g) m -> 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: base-4.9.0.0

Instance details

Defined in Data.Traversable

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) #

(Alternative f, Alternative g) => Alternative (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: (f :*: g) a #

(<|>) :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a #

some :: (f :*: g) a -> (f :*: g) [a] #

many :: (f :*: g) a -> (f :*: g) [a] #

(MonadPlus f, MonadPlus g) => MonadPlus (f :*: g)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: (f :*: g) a #

mplus :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a #

(Eq (f p), Eq (g p)) => Eq ((f :*: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

(==) :: (f :*: g) p -> (f :*: g) p -> Bool #

(/=) :: (f :*: g) p -> (f :*: g) p -> Bool #

(Ord (f p), Ord (g p)) => Ord ((f :*: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

compare :: (f :*: g) p -> (f :*: g) p -> Ordering #

(<) :: (f :*: g) p -> (f :*: g) p -> Bool #

(<=) :: (f :*: g) p -> (f :*: g) p -> Bool #

(>) :: (f :*: g) p -> (f :*: g) p -> Bool #

(>=) :: (f :*: g) p -> (f :*: g) p -> Bool #

max :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p #

min :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p #

(Read (f p), Read (g p)) => Read ((f :*: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

readsPrec :: Int -> ReadS ((f :*: g) p) #

readList :: ReadS [(f :*: g) p] #

readPrec :: ReadPrec ((f :*: g) p) #

readListPrec :: ReadPrec [(f :*: g) p] #

(Show (f p), Show (g p)) => Show ((f :*: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> (f :*: g) p -> ShowS #

show :: (f :*: g) p -> String #

showList :: [(f :*: g) p] -> ShowS #

Generic ((f :*: g) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep ((f :*: g) p) :: Type -> Type #

Methods

from :: (f :*: g) p -> Rep ((f :*: g) p) x #

to :: Rep ((f :*: g) p) x -> (f :*: g) p #

(Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p #

sconcat :: NonEmpty ((f :*: g) p) -> (f :*: g) p #

stimes :: Integral b => b -> (f :*: g) p -> (f :*: g) p #

(Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: (f :*: g) p #

mappend :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p #

mconcat :: [(f :*: g) p] -> (f :*: g) p #

type SubstRep (f :*: g :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (f :*: g :: LoT (t -> k) -> Type) (x :: t) = SubstRep f x :*: SubstRep g x
type Rep1 (f :*: g :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep ((f :*: g) p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

data V1 (p :: k) :: forall k. k -> Type #

Void: used for datatypes without constructors

Instances
Generic1 (V1 :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 V1 :: k -> Type #

Methods

from1 :: V1 a -> Rep1 V1 a #

to1 :: Rep1 V1 a -> V1 a #

Functor (V1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> V1 a -> V1 b #

(<$) :: a -> V1 b -> V1 a #

Foldable (V1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => V1 m -> m #

foldMap :: Monoid m => (a -> m) -> V1 a -> m #

foldr :: (a -> b -> b) -> b -> V1 a -> b #

foldr' :: (a -> b -> b) -> b -> V1 a -> b #

foldl :: (b -> a -> b) -> b -> V1 a -> b #

foldl' :: (b -> a -> b) -> b -> V1 a -> b #

foldr1 :: (a -> a -> a) -> V1 a -> a #

foldl1 :: (a -> a -> a) -> V1 a -> a #

toList :: V1 a -> [a] #

null :: V1 a -> Bool #

length :: V1 a -> Int #

elem :: Eq a => a -> V1 a -> Bool #

maximum :: Ord a => V1 a -> a #

minimum :: Ord a => V1 a -> a #

sum :: Num a => V1 a -> a #

product :: Num a => V1 a -> a #

Traversable (V1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> V1 a -> f (V1 b) #

sequenceA :: Applicative f => V1 (f a) -> f (V1 a) #

mapM :: Monad m => (a -> m b) -> V1 a -> m (V1 b) #

sequence :: Monad m => V1 (m a) -> m (V1 a) #

Eq (V1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(==) :: V1 p -> V1 p -> Bool #

(/=) :: V1 p -> V1 p -> Bool #

Ord (V1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

compare :: V1 p -> V1 p -> Ordering #

(<) :: V1 p -> V1 p -> Bool #

(<=) :: V1 p -> V1 p -> Bool #

(>) :: V1 p -> V1 p -> Bool #

(>=) :: V1 p -> V1 p -> Bool #

max :: V1 p -> V1 p -> V1 p #

min :: V1 p -> V1 p -> V1 p #

Read (V1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Show (V1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> V1 p -> ShowS #

show :: V1 p -> String #

showList :: [V1 p] -> ShowS #

Generic (V1 p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (V1 p) :: Type -> Type #

Methods

from :: V1 p -> Rep (V1 p) x #

to :: Rep (V1 p) x -> V1 p #

Semigroup (V1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: V1 p -> V1 p -> V1 p #

sconcat :: NonEmpty (V1 p) -> V1 p #

stimes :: Integral b => b -> V1 p -> V1 p #

type Rep1 (V1 :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep1 (V1 :: k -> Type) = D1 (MetaData "V1" "GHC.Generics" "base" False) (V1 :: k -> Type)
type Rep (V1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep (V1 p) = D1 (MetaData "V1" "GHC.Generics" "base" False) (V1 :: Type -> Type)

data U1 (p :: k) :: forall k. k -> Type #

Unit: used for constructors without arguments

Constructors

U1 
Instances
Generic1 (U1 :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 U1 :: k -> Type #

Methods

from1 :: U1 a -> Rep1 U1 a #

to1 :: Rep1 U1 a -> U1 a #

Conv (U1 :: Type -> Type) (U1 :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: U1 tys -> U1 a Source #

toKindGenerics :: U1 a -> U1 tys Source #

Monad (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: U1 a -> (a -> U1 b) -> U1 b #

(>>) :: U1 a -> U1 b -> U1 b #

return :: a -> U1 a #

fail :: String -> U1 a #

Functor (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> U1 a -> U1 b #

(<$) :: a -> U1 b -> U1 a #

Applicative (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> U1 a #

(<*>) :: U1 (a -> b) -> U1 a -> U1 b #

liftA2 :: (a -> b -> c) -> U1 a -> U1 b -> U1 c #

(*>) :: U1 a -> U1 b -> U1 b #

(<*) :: U1 a -> U1 b -> U1 a #

Foldable (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => U1 m -> m #

foldMap :: Monoid m => (a -> m) -> U1 a -> m #

foldr :: (a -> b -> b) -> b -> U1 a -> b #

foldr' :: (a -> b -> b) -> b -> U1 a -> b #

foldl :: (b -> a -> b) -> b -> U1 a -> b #

foldl' :: (b -> a -> b) -> b -> U1 a -> b #

foldr1 :: (a -> a -> a) -> U1 a -> a #

foldl1 :: (a -> a -> a) -> U1 a -> a #

toList :: U1 a -> [a] #

null :: U1 a -> Bool #

length :: U1 a -> Int #

elem :: Eq a => a -> U1 a -> Bool #

maximum :: Ord a => U1 a -> a #

minimum :: Ord a => U1 a -> a #

sum :: Num a => U1 a -> a #

product :: Num a => U1 a -> a #

Traversable (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> U1 a -> f (U1 b) #

sequenceA :: Applicative f => U1 (f a) -> f (U1 a) #

mapM :: Monad m => (a -> m b) -> U1 a -> m (U1 b) #

sequence :: Monad m => U1 (m a) -> m (U1 a) #

Alternative (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: U1 a #

(<|>) :: U1 a -> U1 a -> U1 a #

some :: U1 a -> U1 [a] #

many :: U1 a -> U1 [a] #

MonadPlus (U1 :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: U1 a #

mplus :: U1 a -> U1 a -> U1 a #

Eq (U1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(==) :: U1 p -> U1 p -> Bool #

(/=) :: U1 p -> U1 p -> Bool #

Ord (U1 p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

compare :: U1 p -> U1 p -> Ordering #

(<) :: U1 p -> U1 p -> Bool #

(<=) :: U1 p -> U1 p -> Bool #

(>) :: U1 p -> U1 p -> Bool #

(>=) :: U1 p -> U1 p -> Bool #

max :: U1 p -> U1 p -> U1 p #

min :: U1 p -> U1 p -> U1 p #

Read (U1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Show (U1 p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> U1 p -> ShowS #

show :: U1 p -> String #

showList :: [U1 p] -> ShowS #

Generic (U1 p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (U1 p) :: Type -> Type #

Methods

from :: U1 p -> Rep (U1 p) x #

to :: Rep (U1 p) x -> U1 p #

Semigroup (U1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: U1 p -> U1 p -> U1 p #

sconcat :: NonEmpty (U1 p) -> U1 p #

stimes :: Integral b => b -> U1 p -> U1 p #

Monoid (U1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: U1 p #

mappend :: U1 p -> U1 p -> U1 p #

mconcat :: [U1 p] -> U1 p #

type SubstRep (U1 :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (U1 :: LoT (t -> k) -> Type) (x :: t) = (U1 :: LoT k -> Type)
type Rep1 (U1 :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep1 (U1 :: k -> Type) = D1 (MetaData "U1" "GHC.Generics" "base" False) (C1 (MetaCons "U1" PrefixI False) (U1 :: k -> Type))
type Rep (U1 p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

type Rep (U1 p) = D1 (MetaData "U1" "GHC.Generics" "base" False) (C1 (MetaCons "U1" PrefixI False) (U1 :: Type -> Type))

newtype M1 i (c :: Meta) (f :: k -> Type) (p :: k) :: forall k. Type -> Meta -> (k -> Type) -> k -> Type #

Meta-information (constructor names, etc.)

Constructors

M1 

Fields

Instances
Generic1 (M1 i c f :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (M1 i c f) :: k -> Type #

Methods

from1 :: M1 i c f a -> Rep1 (M1 i c f) a #

to1 :: Rep1 (M1 i c f) a -> M1 i c f a #

Conv f f' tys => Conv (M1 i c f) (f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: f' tys -> M1 i c f a Source #

toKindGenerics :: M1 i c f a -> f' tys Source #

Conv f f' tys => Conv (M1 i c f) (M1 i c f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: M1 i c f' tys -> M1 i c f a Source #

toKindGenerics :: M1 i c f a -> M1 i c f' tys Source #

Monad f => Monad (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b #

(>>) :: M1 i c f a -> M1 i c f b -> M1 i c f b #

return :: a -> M1 i c f a #

fail :: String -> M1 i c f a #

Functor f => Functor (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> M1 i c f a -> M1 i c f b #

(<$) :: a -> M1 i c f b -> M1 i c f a #

Applicative f => Applicative (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> M1 i c f a #

(<*>) :: M1 i c f (a -> b) -> M1 i c f a -> M1 i c f b #

liftA2 :: (a -> b -> c0) -> M1 i c f a -> M1 i c f b -> M1 i c f c0 #

(*>) :: M1 i c f a -> M1 i c f b -> M1 i c f b #

(<*) :: M1 i c f a -> M1 i c f b -> M1 i c f a #

Foldable f => Foldable (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => M1 i c f m -> m #

foldMap :: Monoid m => (a -> m) -> M1 i c f a -> m #

foldr :: (a -> b -> b) -> b -> M1 i c f a -> b #

foldr' :: (a -> b -> b) -> b -> M1 i c f a -> b #

foldl :: (b -> a -> b) -> b -> M1 i c f a -> b #

foldl' :: (b -> a -> b) -> b -> M1 i c f a -> b #

foldr1 :: (a -> a -> a) -> M1 i c f a -> a #

foldl1 :: (a -> a -> a) -> M1 i c f a -> a #

toList :: M1 i c f a -> [a] #

null :: M1 i c f a -> Bool #

length :: M1 i c f a -> Int #

elem :: Eq a => a -> M1 i c f a -> Bool #

maximum :: Ord a => M1 i c f a -> a #

minimum :: Ord a => M1 i c f a -> a #

sum :: Num a => M1 i c f a -> a #

product :: Num a => M1 i c f a -> a #

Traversable f => Traversable (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f0 => (a -> f0 b) -> M1 i c f a -> f0 (M1 i c f b) #

sequenceA :: Applicative f0 => M1 i c f (f0 a) -> f0 (M1 i c f a) #

mapM :: Monad m => (a -> m b) -> M1 i c f a -> m (M1 i c f b) #

sequence :: Monad m => M1 i c f (m a) -> m (M1 i c f a) #

Alternative f => Alternative (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: M1 i c f a #

(<|>) :: M1 i c f a -> M1 i c f a -> M1 i c f a #

some :: M1 i c f a -> M1 i c f [a] #

many :: M1 i c f a -> M1 i c f [a] #

MonadPlus f => MonadPlus (M1 i c f)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: M1 i c f a #

mplus :: M1 i c f a -> M1 i c f a -> M1 i c f a #

Eq (f p) => Eq (M1 i c f p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

(==) :: M1 i c f p -> M1 i c f p -> Bool #

(/=) :: M1 i c f p -> M1 i c f p -> Bool #

Ord (f p) => Ord (M1 i c f p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

compare :: M1 i c f p -> M1 i c f p -> Ordering #

(<) :: M1 i c f p -> M1 i c f p -> Bool #

(<=) :: M1 i c f p -> M1 i c f p -> Bool #

(>) :: M1 i c f p -> M1 i c f p -> Bool #

(>=) :: M1 i c f p -> M1 i c f p -> Bool #

max :: M1 i c f p -> M1 i c f p -> M1 i c f p #

min :: M1 i c f p -> M1 i c f p -> M1 i c f p #

Read (f p) => Read (M1 i c f p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

readsPrec :: Int -> ReadS (M1 i c f p) #

readList :: ReadS [M1 i c f p] #

readPrec :: ReadPrec (M1 i c f p) #

readListPrec :: ReadPrec [M1 i c f p] #

Show (f p) => Show (M1 i c f p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> M1 i c f p -> ShowS #

show :: M1 i c f p -> String #

showList :: [M1 i c f p] -> ShowS #

Generic (M1 i c f p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (M1 i c f p) :: Type -> Type #

Methods

from :: M1 i c f p -> Rep (M1 i c f p) x #

to :: Rep (M1 i c f p) x -> M1 i c f p #

Semigroup (f p) => Semigroup (M1 i c f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p #

sconcat :: NonEmpty (M1 i c f p) -> M1 i c f p #

stimes :: Integral b => b -> M1 i c f p -> M1 i c f p #

Monoid (f p) => Monoid (M1 i c f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: M1 i c f p #

mappend :: M1 i c f p -> M1 i c f p -> M1 i c f p #

mconcat :: [M1 i c f p] -> M1 i c f p #

type SubstRep (M1 i c f :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (M1 i c f :: LoT (t -> k) -> Type) (x :: t) = M1 i c (SubstRep f x)
type Rep1 (M1 i c f :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

type Rep1 (M1 i c f :: k -> Type) = D1 (MetaData "M1" "GHC.Generics" "base" True) (C1 (MetaCons "M1" PrefixI True) (S1 (MetaSel (Just "unM1") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 f)))
type Rep (M1 i c f p)

Since: base-4.7.0.0

Instance details

Defined in GHC.Generics

type Rep (M1 i c f p) = D1 (MetaData "M1" "GHC.Generics" "base" True) (C1 (MetaCons "M1" PrefixI True) (S1 (MetaSel (Just "unM1") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (f p))))

newtype Field (t :: Atom d *) (x :: LoT d) where Source #

Fields: used to represent each of the (visible) arguments to a constructor. Replaces the K1 type from GHC.Generics. The type of the field is represented by an Atom from Data.PolyKinded.Atom.

instance GenericK [] (a :&&: LoT0) where
  type RepK [] = Field Var0 :*: Field ([] :$: Var0)

Constructors

Field 

Fields

Instances
k ~ Interpret t tys => Conv (K1 p k :: Type -> Type) (Field t :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: Field t tys -> K1 p k a Source #

toKindGenerics :: K1 p k a -> Field t tys Source #

Show (Interpret t x) => Show (Field t x) Source # 
Instance details

Defined in Generics.Kind

Methods

showsPrec :: Int -> Field t x -> ShowS #

show :: Field t x -> String #

showList :: [Field t x] -> ShowS #

type SubstRep (Field t2 :: LoT (t1 -> k) -> Type) (x :: t1) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (Field t2 :: LoT (t1 -> k) -> Type) (x :: t1)

data ((c :: Atom d Constraint) :=>: (f :: LoT d -> *)) (x :: LoT d) where Source #

Constraints: used to represent constraints in a constructor. Replaces the '(:=>:)' type from GHC.Generics.Extra.

data Showable a = Show a => a -> X a

instance GenericK Showable (a :&&: LoT0) where
  type RepK Showable = (Show :$: a) :=>: (Field V0)

Constructors

SuchThat :: Interpret c x => f x -> (c :=>: f) x 
Instances
(k ~ Interpret t tys, Conv f f' tys) => Conv (k :=>: f) (t :=>: f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (t :=>: f') tys -> (k :=>: f) a Source #

toKindGenerics :: (k :=>: f) a -> (t :=>: f') tys Source #

Interpret c x -> Show (f x) => Show ((c :=>: f) x) Source # 
Instance details

Defined in Generics.Kind

Methods

showsPrec :: Int -> (c :=>: f) x -> ShowS #

show :: (c :=>: f) x -> String #

showList :: [(c :=>: f) x] -> ShowS #

type SubstRep (c :=>: f :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (c :=>: f :: LoT (t -> k) -> Type) (x :: t)

data Exists k (f :: LoT (k -> d) -> *) (x :: LoT d) where Source #

Existentials: a representation of the form E f describes a constructor whose inner type is represented by f, and where the type variable at index 0, V0, is existentially quantified.

data E where
 E :: t -> Exists

instance GenericK E LoT0 where
  type RepK E = Exists (*) (Field Var0)

Constructors

Exists 

Fields

Instances
(forall (t :: k). Show (f (t :&&: x))) => Show (Exists k f x) Source # 
Instance details

Defined in Generics.Kind

Methods

showsPrec :: Int -> Exists k f x -> ShowS #

show :: Exists k f x -> String #

showList :: [Exists k f x] -> ShowS #

Generic type classes

class GenericK (f :: k) (x :: LoT k) where Source #

Representable types of any kind. The definition of an instance must mention the type constructor along with a list of types of the corresponding length. For example:

instance GenericK Int    LoT0
instance GenericK []     (a :&&: LoT0)
instance GenericK Either (a :&&: b :&&: LoT0)

Minimal complete definition

Nothing

Associated Types

type RepK f :: LoT k -> * Source #

Methods

fromK :: (f :@@: x) -> RepK f x Source #

Convert the data type to its representation.

fromK :: (Generic (f :@@: x), Conv (Rep (f :@@: x)) (RepK f) x) => (f :@@: x) -> RepK f x Source #

Convert the data type to its representation.

toK :: RepK f x -> f :@@: x Source #

Convert from a representation to its corresponding data type.

toK :: (Generic (f :@@: x), Conv (Rep (f :@@: x)) (RepK f) x) => RepK f x -> f :@@: x Source #

Convert from a representation to its corresponding data type.

Instances
GenericK Ranky LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Ranky :: LoT k -> Type Source #

GenericK (Maybe a :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (Maybe a) :: LoT k -> Type Source #

GenericK (WeirdTreeR a :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (WeirdTreeR a) :: LoT k -> Type Source #

GenericK (HappyFamily [a] :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (HappyFamily [a]) :: LoT k -> Type Source #

GenericK (HappyFamily (Maybe a) :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (HappyFamily (Maybe a)) :: LoT k -> Type Source #

GenericK (Tree a :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (Tree a) :: LoT k -> Type Source #

Methods

fromK :: (Tree a :@@: LoT0) -> RepK (Tree a) LoT0 Source #

toK :: RepK (Tree a) LoT0 -> Tree a :@@: LoT0 Source #

GenericK (Either a b :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (Either a b) :: LoT k -> Type Source #

Methods

fromK :: (Either a b :@@: LoT0) -> RepK (Either a b) LoT0 Source #

toK :: RepK (Either a b) LoT0 -> Either a b :@@: LoT0 Source #

GenericK (SimpleIndex a b :: Type) LoT0 Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (SimpleIndex a b) :: LoT k -> Type Source #

GenericK Either (a :&&: (b :&&: LoT0) :: LoT (Type -> Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Either :: LoT k -> Type Source #

Methods

fromK :: (Either :@@: (a :&&: (b :&&: LoT0))) -> RepK Either (a :&&: (b :&&: LoT0)) Source #

toK :: RepK Either (a :&&: (b :&&: LoT0)) -> Either :@@: (a :&&: (b :&&: LoT0)) Source #

GenericK SimpleIndex (a :&&: (b :&&: LoT0) :: LoT (Type -> Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK SimpleIndex :: LoT k -> Type Source #

GenericK Maybe (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Maybe :: LoT k -> Type Source #

GenericK Shower (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Shower :: LoT k -> Type Source #

GenericK Ranky2 (b :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Ranky2 :: LoT k -> Type Source #

GenericK WeirdTreeR (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK WeirdTreeR :: LoT k -> Type Source #

GenericK WeirdTree (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK WeirdTree :: LoT k -> Type Source #

GenericK HappyFamily (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK HappyFamily :: LoT k -> Type Source #

GenericK Tree (a :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK Tree :: LoT k -> Type Source #

GenericK (P' :: Type -> k -> Type) (j :&&: (a :&&: LoT0) :: LoT (Type -> k -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK P' :: LoT k -> Type Source #

Methods

fromK :: (P' :@@: (j :&&: (a :&&: LoT0))) -> RepK P' (j :&&: (a :&&: LoT0)) Source #

toK :: RepK P' (j :&&: (a :&&: LoT0)) -> P' :@@: (j :&&: (a :&&: LoT0)) Source #

GenericK (Either a :: Type -> Type) (b :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (Either a) :: LoT k -> Type Source #

Methods

fromK :: (Either a :@@: (b :&&: LoT0)) -> RepK (Either a) (b :&&: LoT0) Source #

toK :: RepK (Either a) (b :&&: LoT0) -> Either a :@@: (b :&&: LoT0) Source #

GenericK (SimpleIndex a :: Type -> Type) (b :&&: LoT0 :: LoT (Type -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (SimpleIndex a) :: LoT k -> Type Source #

GenericK (P k :: k -> Type) (a :&&: LoT0 :: LoT (k -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (P k) :: LoT k -> Type Source #

Methods

fromK :: (P k :@@: (a :&&: LoT0)) -> RepK (P k) (a :&&: LoT0) Source #

toK :: RepK (P k) (a :&&: LoT0) -> P k :@@: (a :&&: LoT0) Source #

GenericK (T :: k -> Type) (a :&&: LoT0 :: LoT (k -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK T :: LoT k -> Type Source #

Methods

fromK :: (T :@@: (a :&&: LoT0)) -> RepK T (a :&&: LoT0) Source #

toK :: RepK T (a :&&: LoT0) -> T :@@: (a :&&: LoT0) Source #

GenericK (P' j :: k -> Type) (a :&&: LoT0 :: LoT (k -> Type)) Source # 
Instance details

Defined in Generics.Kind.Examples

Associated Types

type RepK (P' j) :: LoT k -> Type Source #

Methods

fromK :: (P' j :@@: (a :&&: LoT0)) -> RepK (P' j) (a :&&: LoT0) Source #

toK :: RepK (P' j) (a :&&: LoT0) -> P' j :@@: (a :&&: LoT0) Source #

type GenericF t f x = (GenericK f x, x ~ SplitF t f, t ~ (f :@@: x)) Source #

fromF :: forall f t x. GenericF t f x => t -> RepK f x Source #

toF :: forall f t x. GenericF t f x => RepK f x -> t Source #

type GenericN n t f x = (GenericK f x, TyEnv f x ~ SplitN n t, t ~ (f :@@: x)) Source #

fromN :: forall n t f x. GenericN n t f x => t -> RepK f x Source #

toN :: forall n t f x. GenericN n t f x => RepK f x -> t Source #

Getting more instances almost for free

fromRepK :: forall f x xs. (GenericK f (x :&&: xs), SubstRep' (RepK f) x xs) => (f x :@@: xs) -> SubstRep (RepK f) x xs Source #

toRepK :: forall f x xs. (GenericK f (x :&&: xs), SubstRep' (RepK f) x xs) => SubstRep (RepK f) x xs -> f x :@@: xs Source #

type family SubstRep f x :: LoT k -> * Source #

Instances
type SubstRep (U1 :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (U1 :: LoT (t -> k) -> Type) (x :: t) = (U1 :: LoT k -> Type)
type SubstRep (Field t2 :: LoT (t1 -> k) -> Type) (x :: t1) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (Field t2 :: LoT (t1 -> k) -> Type) (x :: t1)
type SubstRep (f :*: g :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (f :*: g :: LoT (t -> k) -> Type) (x :: t) = SubstRep f x :*: SubstRep g x
type SubstRep (f :+: g :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (f :+: g :: LoT (t -> k) -> Type) (x :: t) = SubstRep f x :+: SubstRep g x
type SubstRep (c :=>: f :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (c :=>: f :: LoT (t -> k) -> Type) (x :: t)
type SubstRep (M1 i c f :: LoT (t -> k) -> Type) (x :: t) Source # 
Instance details

Defined in Generics.Kind

type SubstRep (M1 i c f :: LoT (t -> k) -> Type) (x :: t) = M1 i c (SubstRep f x)

Bridging with GHC.Generics

class Conv (gg :: * -> *) (kg :: LoT d -> *) (tys :: LoT d) where Source #

Bridges a representation of a data type using the combinators in GHC.Generics with a representation using this module. You are never expected to manipulate this type class directly, it is part of the deriving mechanism for GenericK.

Methods

toGhcGenerics :: kg tys -> gg a Source #

toKindGenerics :: gg a -> kg tys Source #

Instances
Conv (U1 :: Type -> Type) (U1 :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: U1 tys -> U1 a Source #

toKindGenerics :: U1 a -> U1 tys Source #

k ~ Interpret t tys => Conv (K1 p k :: Type -> Type) (Field t :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: Field t tys -> K1 p k a Source #

toKindGenerics :: K1 p k a -> Field t tys Source #

(k ~ Interpret t tys, Conv f f' tys) => Conv (k :=>: f) (t :=>: f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (t :=>: f') tys -> (k :=>: f) a Source #

toKindGenerics :: (k :=>: f) a -> (t :=>: f') tys Source #

(Conv f f' tys, Conv g g' tys) => Conv (f :*: g) (f' :*: g' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (f' :*: g') tys -> (f :*: g) a Source #

toKindGenerics :: (f :*: g) a -> (f' :*: g') tys Source #

(Conv f f' tys, Conv g g' tys) => Conv (f :+: g) (f' :+: g' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: (f' :+: g') tys -> (f :+: g) a Source #

toKindGenerics :: (f :+: g) a -> (f' :+: g') tys Source #

Conv f f' tys => Conv (M1 i c f) (f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: f' tys -> M1 i c f a Source #

toKindGenerics :: M1 i c f a -> f' tys Source #

Conv f f' tys => Conv (M1 i c f) (M1 i c f' :: LoT d -> Type) (tys :: LoT d) Source # 
Instance details

Defined in Generics.Kind

Methods

toGhcGenerics :: M1 i c f' tys -> M1 i c f a Source #

toKindGenerics :: M1 i c f a -> M1 i c f' tys Source #