úÎ-/+`     !Appends a type-list and another. The empty type-list. Cons a type onto type-list. 3Provides injection and projection into type lists. Holds e == prj (inj e s) for all s and e. Injects a value of type e into s if s contains the type e. Projects a value of type e out from s if s contains the type e. )Represents concatenated rows or records. Field a3 is a type list which contains only one element of  a6. And every field in the records should be this type. If you concatenate fields with (:&:) at type-level, (&) at D value-level, it becomes a record can be manipulated by functions  in this module.  Creates a  of a. Concatenates between s or records. Records are = concatenated rows. For example, Following expressions are  valid.  ( -- Concatenation of rows (i.e. record)  field "string" & field True   -- Concatenation of records 9 (field 'c' & field ()) & (field False & field "string") 8 -- ... And concatenations between a field and a record + field () & (field False & field "string") & (field 'c' & field ()) & field False Updates a value e in s, using given function e -> e. unknown experimentalnonowarn@gmail.comMeaning of this constraint is " This record s has a field of  entity e." Here, I use the word " constraint" for class which ) is useful on writing type signitures. Holds v == (e .^ (e ^= v $ s)) where  e :: e; v ::  TypeOf e; s :: s for all e with TypeOf e and s. Same as Knows e (TypeOf e) s. Field labelled with a, and contains TypeOf a. TypeOf a$ should indicate a type labelled by a. When defining : entities, declare instance of this family. If you want Foo  entity points to Int , you write 0 data Foo = Foo; type instance TypeOf Foo = Int  Injects and projects a value of v a corresponding field  in records a along entity e. Holds v == prjl e (injl e v r). Injects a value v into record a along e. Projects a value v into record a along e. Represents labelled field. Represents labelled value.  !Attaches a label. "Detaches a label. Makes a labelled field. Updates a value of v in a record r using function of v -> v. Creates a field labelled by a Writes field of e in r with TypeOf e. Reads TypeOf e from field of e in r. Modifies field of e in r with given function  TypeOf e ->  | TypeOf e. Creates field of e with given value TypeOf e.  Stealed from Chris Drone' s blog post:  Ahttp://chrisdone.com/posts/2010-11-22-duck-typing-in-haskell.html       #      !"#$% has-0.5.0.0Data.HasData.Has.TypeListData.Has.EngineTyNil:::Contains:&:Fieldfield&HasFieldOfTypeOfKnowsinjlprjl:>Labelled.>updlfieldOf^=^.^:^-Append:++:.++.const2injprjupdLabel unLabelledlabelunlabel