Documentation
(.*.) :: HExtend e l l' => e -> l -> l'Source
(.*.) -- Add a field to a record. Analagous to (++) for lists.
record .*. field1 .*. field2 -
(.!.) :: HasField l r v => r -> l -> vSource
(.!.) -- Lookup a value in a record, by its label. Analagous to (!!), the list indexing operation. Highest fixity, like (!!).
record1 .*. label1 .=. record2 .!. label1 .*. label2 .=. record2 .!. label2 -
type :+: e l = HCons (Proxy e) lSource
(.-.) -- Remove a field from a record. At the same level as other record modification options (.*.). Analagous to (\) in lists.
record1 .-. label1
label1 .=. value1 .*. label2 .=. value2 .-. label2 .*. emptyRecord
label1 .=. value1 .-. label1 .*. label2 .=. value2 .*. emptyRecord
record1 .*. label1 .=. record2 .!. label1 .*. label2 .=. record2 .!. label2 .-. label1 -
(..) -- Update a field with a particular value.
Same fixity as (.*.) so that extensions and updates can be chained.
There is no real list analogue, since there is no Prelude defined
update.
label1 .=. value1 .
. record1
(.^.) -- This is a variation on updating (according to GhcRecord.hs), so use the same fixity as (.@.).
(.<.) -- Another variation on update, so give it the same fixity as (.@.).
(.<++.) -- Similar to list append, so give this slightly lower fixity than (.*.), so we can write:
field1 .=. value .*. record1 .<++. record2