named-records-0.2.2: Flexible records with named fields.

Safe HaskellNone
LanguageHaskell2010

Data.NamedRecord

Documentation

class Property o n v | o n -> v where Source

Methods

get :: o -> n -> v infixl 1 Source

set :: o -> (n := v) -> o infixl 1 Source

Instances

Property b n v => Property ((:+) a b) n v 
Property ((:+) ((:=) n v) b) n v 
Property ((:=) n v) n v 

add :: b -> a -> a :+ b infixl 1 Source

data a := b infixl 3 Source

Constructors

a := b infixl 3 

Instances

(Show a, Show b) => Show ((:=) a b) 
Property ((:+) ((:=) n v) b) n v 
Property ((:=) n v) n v 
ToType v => RecordTemplate ((:=) String v) [(String, Q Type, Maybe (Q Exp))] [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToExp d) => RecordTemplate ((:=) ((:=) String v) d) [(String, Q Type, Maybe (Q Exp))] [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp e) => RecordTemplate ((:=) String v) ((:=) ((:=) String w) e) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w) => RecordTemplate ((:=) String v) ((:=) String w) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp d, ToExp e) => RecordTemplate ((:=) ((:=) String v) d) ((:=) ((:=) String w) e) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp d) => RecordTemplate ((:=) ((:=) String v) d) ((:=) String w) [(String, Q Type, Maybe (Q Exp))] 

data a :+ b infixr 2 Source

Constructors

a :+ b infixr 2 

Instances

(Show a, Show b) => Show ((:+) a b) 
Property b n v => Property ((:+) a b) n v 
Property ((:+) ((:=) n v) b) n v 

record :: String -> Record Source

has :: RecordTemplate a b c => a -> b -> c infixr 1 Source

class RecordTemplate a b c | a b -> c where Source

Methods

(~>) :: a -> b -> c infixr 1 Source

Instances

ToType v => RecordTemplate ((:=) String v) [(String, Q Type, Maybe (Q Exp))] [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToExp d) => RecordTemplate ((:=) ((:=) String v) d) [(String, Q Type, Maybe (Q Exp))] [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp e) => RecordTemplate ((:=) String v) ((:=) ((:=) String w) e) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w) => RecordTemplate ((:=) String v) ((:=) String w) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp d, ToExp e) => RecordTemplate ((:=) ((:=) String v) d) ((:=) ((:=) String w) e) [(String, Q Type, Maybe (Q Exp))] 
(ToType v, ToType w, ToExp d) => RecordTemplate ((:=) ((:=) String v) d) ((:=) String w) [(String, Q Type, Maybe (Q Exp))] 

module Data.Name