-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Functional Pearl: Implicit Configurations -- -- Implementation of the code in Functional Pearl: Implicit -- Configurations by Oleg Kiselyov and Chung-chieh Shan @package reflection @version 0.0.0 -- | Implementation of the Functional Pearl: Implicit Configurations paper -- by Oleg Kiselyov and Chung-chieh Shan. -- -- http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf -- -- Packaged and updated to work with the current implementation of scoped -- type variables by Edward Kmett. module Data.Reflection class ReflectNum s reflectNum :: (ReflectNum s, Num a) => s -> a reflectNum :: (ReflectNum s, Num a) => s -> a reifyIntegral :: (Integral a) => a -> (forall s. (ReflectNum s) => s -> w) -> w class ReflectNums ss reifyIntegrals :: (Integral a) => [a] -> (forall ss. (ReflectNums ss) => ss -> w) -> w class ReflectStorable s reflectStorable :: (ReflectStorable s, Storable a) => s a -> a reflectStorable :: (ReflectStorable s, Storable a) => s a -> a reifyStorable :: (Storable a) => a -> (forall s. (ReflectStorable s) => s a -> w) -> w class Reflect s a | s -> a reflect :: (Reflect s a) => s -> a reflect :: (Reflect s a) => s -> a reify :: a -> (forall s. (Reflect s a) => s -> w) -> w instance (ReflectStorable s) => Reflect (Stable s a) a instance (ReflectNums s) => ReflectStorable (Store s) instance (ReflectNum s, ReflectNums ss) => ReflectNums (Cons s ss) instance ReflectNums Nil instance (ReflectNum s) => ReflectNum (Pred s) instance (ReflectNum s) => ReflectNum (Succ s) instance (ReflectNum s) => ReflectNum (Twice s) instance ReflectNum Zero