vinyl-0.5: Extensible Records

Data.Vinyl.Notation

Synopsis

Documentation

(<+>) :: Rec f as -> Rec f bs -> Rec f (as ++ bs) infixr 5 Source

A shorthand for `rappend`.

(<<*>>) :: Rec (Lift (->) f g) rs -> Rec f rs -> Rec g rs infixl 8 Source

A shorthand for `rapply`.

(<<\$>>) :: (forall x. f x -> g x) -> Rec f rs -> Rec g rs infixl 8 Source

A shorthand for `rmap`.

(<<&>>) :: Rec f rs -> (forall x. f x -> g x) -> Rec g rs Source

An inverted shorthand for `rmap`.

data Rec :: (u -> *) -> [u] -> * where Source

A record is parameterized by a universe `u`, an interpretation `f` and a list of rows `rs`. The labels or indices of the record are given by inhabitants of the kind `u`; the type of values at any label `r :: u` is given by its interpretation `f r :: *`.

Constructors

 (:&) :: !(f r) -> !(Rec f rs) -> Rec f (r : rs) infixr 9

Instances

 (Eq (f r), Eq (Rec k f rs)) => Eq (Rec k f ((:) k r rs)) Eq (Rec k f ([] k)) RecAll k f rs Show => Show (Rec k f rs) Records may be shown insofar as their points may be shown. `reifyConstraint` is used to great effect here. (Storable (f r), Storable (Rec k f rs)) => Storable (Rec k f ((:) k r rs)) Storable (Rec k f ([] k)) (Monoid (f r), Monoid (Rec k f rs)) => Monoid (Rec k f ((:) k r rs)) Monoid (Rec k f ([] k))

type (∈) r rs = RElem r rs (RIndex r rs) Source

A shorthand for `RElem` which supplies its index.

type (⊆) rs ss = RSubset rs ss (RImage rs ss) Source

A shorthand for `RSubset` which supplies its image.

type (≅) rs ss = REquivalent rs ss (RImage rs ss) (RImage ss rs) Source

A shorthand for `REquivalent` which supplies its images.

type (<:) rs ss = rs ss Source

A non-unicode equivalent of `(⊆)`.

type (:~:) rs ss = rs ss Source

A non-unicode equivalent of `(≅)`.