Data.HList.HListPrelude

Heterogeneous type sequences

data HNil

data HCons e l

The set of all types of heterogeneous lists

class HList l

Public constructors

hNil

hCons

Basic list functions

class HHead l h

class HTail l l'

A class for extension

class HExtend e l l'

Appending HLists

append

class HAppend l l' l''

Reversing HLists

class HReverse l1 l2

class HReverse' l1 l2 l3

Naive HReverse

class NaiveHReverse l l'

A nicer notation for lists

hEnd

Building non-empty lists

hBuild

class HBuild' l a r

A heterogeneous apply operator

class Apply f a r

data Id

A heterogeneous fold for all types

class HFoldr f v l r

Map

class HMap f l l'

Map a heterogeneous list to a homogeneous one

class HMapOut f r e

A heterogenous version of mapM.

hMapM

hMapM_

A reconstruction of append

append'

hAppend'

data ApplyHCons

A heterogeneous map for all types

data HMap' f

hMap'

A function for showing

data HShow

data HSeq x

Type-level equality for lists

Staged equality for lists

class HStagedEq' b e e'

Ensure a list to contain HNats only

class HNats l

Static set property based on HEq

class HSet l

Find an element in a set based on HEq

class HFind e l n

class HFind' b e l n

Membership test

class HMember e l b

hMember

Another type-level membership test

class HMemberM e l r

class HMemberM' b e l r

Membership test based on type equality

class HTMember e l b

hTMember

Intersection based on HTMember

class HTIntersect l1 l2 l3

class HTIntersectBool b h t l1 l2

Turn a heterogeneous list into a homogeneous one

class HList2List l e

With HMaybe

Turn list in a list of justs

class ToHJust l l'

Extract justs from list of maybes

class FromHJust l l'

Annotated lists

data HAddTag t

data HRmTag

hAddTag

hRmTag

hFlag

Splitting by HTrue and HFalse

class HSplit l l' l''