multistate-0.8.0.3: like mtl's ReaderT / WriterT / StateT, but more than one contained value/type.

Safe HaskellSafe
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
(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
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
HInit ([] :: [Type]) Source # 
Instance details

Defined in Data.HList.HList

Methods

hInit :: Proxy l2 -> HList (Append [] l2) -> HList [] Source #

hSplit :: HList (Append [] l2) -> (HList [], HList l2) Source #

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

Defined in Data.HList.HList

Methods

hInit :: Proxy l2 -> HList (Append (x ': l1) l2) -> HList (x ': l1) Source #

hSplit :: HList (Append (x ': l1) l2) -> (HList (x ': l1), HList l2) Source #