extensible-0.3.4: Extensible, efficient, lens-friendly data types

Copyright(c) Fumiaki Kinoshita 2015
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Extensible.TH

Description

 

Synopsis

Documentation

mkField :: String -> DecsQ Source

Generate fields using itemAssoc. mkField "foo bar" defines:

foo :: FieldOptic "foo"
foo = itemAssoc (Proxy :: Proxy "foo")
bar :: FieldOptic "bar"
bar = itemAssoc (Proxy :: Proxy "bar")

decFields :: DecsQ -> DecsQ Source

Generate newtype wrappers and lenses from type synonyms.

decFields [d|type Foo = Int|]

Generates:

newtype Foo = Foo Int
foo :: (Foo ∈ xs) => Lens' (AllOf xs) Int
foo = accessing Foo

decFieldsDeriving :: [Name] -> DecsQ -> DecsQ Source

decFields with additional deriving clauses