This file is indexed.

/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>
--   &gt;&gt;&gt; reify 6 (\p -&gt; 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