Module

Type.RowList

#ListToRow

class ListToRow :: forall k. RowList k -> Row k -> Constraintclass ListToRow list row | list -> row

Convert a RowList to a row of types. The inverse of this operation is RowToList.

Instances

#RowListRemove

class RowListRemove :: forall k. Symbol -> RowList k -> RowList k -> Constraintclass RowListRemove label input output | label input -> output

Remove all occurences of a given label from a RowList

Instances

#RowListSet

class RowListSet :: forall k. Symbol -> k -> RowList k -> RowList k -> Constraintclass RowListSet label typ input output | label typ input -> output

Add a label to a RowList after removing other occurences.

Instances

#RowListNub

class RowListNub :: forall k. RowList k -> RowList k -> Constraintclass RowListNub input output | input -> output

Remove label duplicates, keeps earlier occurrences.

Instances

#RowListAppend

class RowListAppend :: forall k. RowList k -> RowList k -> RowList k -> Constraintclass RowListAppend lhs rhs out | lhs rhs -> out

Instances

Re-exports from Prim.RowList

#RowList

data RowList :: Type -> Type

A type level list representation of a row of types.

#Nil

data Nil :: forall (k :: Type). RowList k

The empty RowList.

#Cons

data Cons :: forall (k :: Type). Symbol -> k -> RowList k -> RowList k

Constructs a new RowList from a label, a type, and an existing tail RowList. E.g: Cons "x" Int (Cons "y" Int Nil).

#RowToList

class RowToList (row :: Row k) (list :: RowList k) | row -> list

Compiler solved type class for generating a RowList from a closed row of types. Entries are sorted by label and duplicates are preserved in the order they appeared in the row.

Modules