Data.Rawr

Fields

data Strictness

data Field s l t

type family (l :: Symbol) := (t :: *) = (f :: *) | f -> l t where ...

type family (l :: Symbol) :=! (t :: *) = (f :: *) | f -> l t where ...

Patterns for fields

Records

type family R (t :: *) = (r :: *) where ...

Indexing records

class (s :!! l) a

Merging & partitioning records

type x :*: y

class (xs ::*: ys) r

Utilities

type r :~ f