/usr/share/doc/libghc-reflection-doc/html/reflection.txt is in libghc-reflection-doc 1.2.0.1-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | -- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Reifies arbitrary terms into types that can be reflected back into terms
--
-- 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 streamlined to improve
-- performance.
--
-- The original paper can be obtained from
-- <a>http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf</a>.
@package reflection
@version 1.2.0.1
-- | Reifies arbitrary terms at the type level. Based on the Functional
-- Pearl: Implicit Configurations paper by Oleg Kiselyov and Chung-chieh
-- Shan.
--
-- <a>http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf</a>
--
-- 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 comes down to two combinators, <a>reify</a> and <a>reflect</a>.
--
-- <pre>
-- >>> reify 6 (\p -> reflect p + reflect p)
-- 12
-- </pre>
--
-- The argument passed along by reify is just a <tt>data <a>Proxy</a> t =
-- Proxy</tt>, 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 <tt>examples/Monoid.hs</tt>).
--
-- In addition, a simpler API is offered for working with singleton
-- values such as a system configuration, etc.
module Data.Reflection
class Reifies s a | s -> a
reflect :: Reifies s a => proxy s -> a
-- | Reify a value at the type level, to be recovered with <a>reflect</a>.
reify :: a -> (forall s. Reifies s a => Proxy s -> r) -> r
-- | This is a version of <a>Reifies</a> that allows for only a single
-- value.
--
-- This is easier to work with than <a>Reifies</a> and permits extended
-- defaulting, but it only offers a single reflected value of a given
-- type at a time.
class Given a
given :: Given a => a
-- | Reify a value into an instance to be recovered with <a>given</a>.
--
-- You should only <a>give</a> a single value for each type. If multiple
-- instances are in scope, then the behavior is implementation defined.
give :: a -> (Given a => r) -> r
|