úÎ/m     non-portable experimentalEdward Kmett <ekmett@gmail.com> Trustworthy This is a version of & that allows for only a single value. !This is easier to work with than " and permits extended defaulting, H but it only offers a single reflected value of a given type at a time. :Recover the value of a given type previously encoded with  . Recover a value inside a  context, given a proxy for its  reified type. 6Reify a value at the type level, to be recovered with . 4Reify a value into an instance to be recovered with . You should only  5 a single value for each type. If multiple instances < are in scope, then the behavior is implementation defined. [This can be used to generate a template haskell splice for a type level version of a given  . eThis does not use GHC TypeLits, instead it generates a numeric type by hand similar to the ones used  in the ")Functional Pearl: Implicit Configurations". paper by Oleg Kiselyov and Chung-Chieh Shan.  This is a restricted version of  @ that can only generate natural numbers. Attempting to generate i a negative number results in a compile time error. Also the resulting sequence will consist entirely of G Z, D, and SD constructors representing the number in zeroless binary. 6This permits the use of $(5) as an expression splice. /This permits the use of $(5) as a type splice. "    !       !"      !"reflection-1.3.2Data.ReflectionPDSDDZGivengivenReifiesreflectreifygiveintnat$fNumExp $fNumTypeGiftMagicretagDretagSDretagPDplustimesminusfract$fFractionalExp $fFractionalQ$fNumQ$fEqQ$fShowQ$fReifies*PDInt$fReifies*SDInt$fReifies*DInt$fReifies*ZInt