barbies-th-0.1.7: Create strippable HKD via TH
Safe HaskellNone
LanguageHaskell2010

Barbies.TH

Synopsis

Documentation

class FieldNamesB b where Source #

barbies doesn't care about field names, but they are useful in many use cases

Methods

bfieldNames :: IsString a => b (Const a) Source #

A collection of field names.

data LensB b a Source #

A pair of a getter and a setter Not van Laarhoven to avoid dictionary passing

Constructors

LensB 

Fields

  • viewB :: forall h. b h -> h a
     
  • setB :: forall h. h a -> b h -> b h
     

getLensB :: Functor f => LensB b a -> (h a -> f (h a)) -> b h -> f (b h) Source #

class AccessorsB b where Source #

Methods

baccessors :: b (LensB b) Source #

A collection of lenses (getter-setter pairs)

declareBareB :: DecsQ -> DecsQ Source #

Transform a regular Haskell record declaration into HKD form. BareB, FieldNamesB, FunctorB, DistributiveB, TraversableB, ApplicativeB and ConstraintsB instances are derived.

For example,

declareBareB [d|data User = User { uid :: Int, name :: String}|]

becomes

data User t f = User { uid :: Wear t f Int, name :: Wear t f String }