-- DOC: http://okmij.org/ftp/tagless-final/NBE.html
-- DOC: https://www.dicosmo.org/Articles/2004-BalatDiCosmoFiore-Popl.pdf
data ReifyReflect repr meta a = ReifyReflect
- { -- | 'reflect' converts from a *represented* Haskell term of type @a@
- -- to an object *representing* that value of type @a@.
- reify :: meta -> repr a
- , -- | 'reflect' converts back an object *representing* a value of type @a@,
- -- to the *represented* Haskell term of type @a@.
- reflect :: repr a -> meta
+ { reify :: meta -> repr a
+ -- ^ 'reflect' converts from a *represented* Haskell term of type @a@
+ -- to an object *representing* that value of type @a@.
+ , reflect :: repr a -> meta
+ -- ^ 'reflect' converts back an object *representing* a value of type @a@,
+ -- to the *represented* Haskell term of type @a@.
}
-- | The base of induction : placeholder for a type which is not the arrow type.