-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Functional Pearl: Implicit Configurations -- -- This package provides an implementation of the ideas presented in the -- paper "Functional Pearl: Implicit Configurations" by Oleg Kiselyov and -- Chung-chieh Shan. However, the API has been modified to use -- TypeFamilies and the implementation has been streamlined to -- improve performance. -- -- The original paper can be obtained from -- http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf -- -- Changes in 1.0: -- -- -- -- Changes in 0.9: -- -- -- -- Changes in 0.8: -- -- -- -- Changes in 0.7: -- -- -- -- Changes in 0.6: -- -- -- -- Changes in 0.5: -- -- -- -- Changes in 0.4: -- -- @package reflection @version 1.0 -- | Based on the Functional Pearl: Implicit Configurations paper by Oleg -- Kiselyov and Chung-chieh Shan. -- -- http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf -- -- The approach from the paper was modified to work with Data.Proxy and -- to cheat by using knowledge of GHC's internal representations by -- Edward Kmett and Elliott Hird. -- -- Usage reduces to using two combinators, reify and -- reflect. -- --
--   ghci> reify 6 (\p -> reflect p + reflect p) :: Int
--   12
--   
-- -- The argument passed along by reify is just a data Proxy t = -- Proxy, so all of the information needed to reconstruct your value -- has been moved to the type level. This enables it to be used when -- constructing instances (see examples/Monoid.hs). module Data.Reflection class Reified s where type family Reflected s reflect :: Reified s => p s -> Reflected s reify :: a -> (forall s. (Reified s, Reflected s ~ a) => Proxy s -> w) -> w