multistate-0.8.0.4: like mtl's ReaderT / WriterT / StateT, but more than one contained value/type.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.HList.HList

Description

A GADT HList implementation

There exist other implementations of HList on hackage, but none seem to be reliably maintained.

Documentation

data HList :: [Type] -> Type where Source #

Constructors

HNil :: HList '[] 
(:+:) :: x -> HList xs -> HList (x ': xs) infixr 5 

Instances

Instances details
(Eq x, Eq (HList xs)) => Eq (HList (x ': xs)) Source # 
Instance details

Defined in Data.HList.HList

Methods

(==) :: HList (x ': xs) -> HList (x ': xs) -> Bool #

(/=) :: HList (x ': xs) -> HList (x ': xs) -> Bool #

Eq (HList ('[] :: [Type])) Source # 
Instance details

Defined in Data.HList.HList

Methods

(==) :: HList '[] -> HList '[] -> Bool #

(/=) :: HList '[] -> HList '[] -> Bool #

(Show a, Show (HList b)) => Show (HList (a ': b)) Source # 
Instance details

Defined in Data.HList.HList

Methods

showsPrec :: Int -> HList (a ': b) -> ShowS #

show :: HList (a ': b) -> String #

showList :: [HList (a ': b)] -> ShowS #

Show (HList ('[] :: [Type])) Source # 
Instance details

Defined in Data.HList.HList

Methods

showsPrec :: Int -> HList '[] -> ShowS #

show :: HList '[] -> String #

showList :: [HList '[]] -> ShowS #

(Semigroup x, Semigroup (HList xs)) => Semigroup (HList (x ': xs)) Source # 
Instance details

Defined in Data.HList.HList

Methods

(<>) :: HList (x ': xs) -> HList (x ': xs) -> HList (x ': xs) #

sconcat :: NonEmpty (HList (x ': xs)) -> HList (x ': xs) #

stimes :: Integral b => b -> HList (x ': xs) -> HList (x ': xs) #

Semigroup (HList ('[] :: [Type])) Source # 
Instance details

Defined in Data.HList.HList

Methods

(<>) :: HList '[] -> HList '[] -> HList '[] #

sconcat :: NonEmpty (HList '[]) -> HList '[] #

stimes :: Integral b => b -> HList '[] -> HList '[] #

(Semigroup x, Monoid x, Semigroup (HList xs), Monoid (HList xs)) => Monoid (HList (x ': xs)) Source # 
Instance details

Defined in Data.HList.HList

Methods

mempty :: HList (x ': xs) #

mappend :: HList (x ': xs) -> HList (x ': xs) -> HList (x ': xs) #

mconcat :: [HList (x ': xs)] -> HList (x ': xs) #

Monoid (HList ('[] :: [Type])) Source # 
Instance details

Defined in Data.HList.HList

Methods

mempty :: HList '[] #

mappend :: HList '[] -> HList '[] -> HList '[] #

mconcat :: [HList '[]] -> HList '[] #

type family Append (l1 :: [Type]) (l2 :: [Type]) :: [Type] Source #

Instances

Instances details
type Append ('[] :: [Type]) l2 Source # 
Instance details

Defined in Data.HList.HList

type Append ('[] :: [Type]) l2 = l2
type Append (car1 ': cdr2) l2 Source # 
Instance details

Defined in Data.HList.HList

type Append (car1 ': cdr2) l2 = car1 ': Append cdr2 l2

hAppend :: HList ts1 -> HList ts2 -> HList (Append ts1 ts2) Source #

class HInit (l1 :: [Type]) where Source #

Methods

hInit :: forall l2. Proxy l2 -> HList (Append l1 l2) -> HList l1 Source #

hSplit :: forall l2. HList (Append l1 l2) -> (HList l1, HList l2) Source #

Instances

Instances details
HInit ('[] :: [Type]) Source # 
Instance details

Defined in Data.HList.HList

Methods

hInit :: forall (l2 :: [Type]). Proxy l2 -> HList (Append '[] l2) -> HList '[] Source #

hSplit :: forall (l2 :: [Type]). HList (Append '[] l2) -> (HList '[], HList l2) Source #

HInit l1 => HInit (x ': l1) Source # 
Instance details

Defined in Data.HList.HList

Methods

hInit :: forall (l2 :: [Type]). Proxy l2 -> HList (Append (x ': l1) l2) -> HList (x ': l1) Source #

hSplit :: forall (l2 :: [Type]). HList (Append (x ': l1) l2) -> (HList (x ': l1), HList l2) Source #