This file is indexed.

/usr/share/doc/libghc-curry-frontend-doc/html/src/Base-Kinds.html is in libghc-curry-frontend-doc 1.0.1-1.

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
63
64
65
66
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>src/Base/Kinds.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{- |
<a name="line-2"></a>    Module      :  $Header$
<a name="line-3"></a>    Description :  Internal representation of kinds
<a name="line-4"></a>    Copyright   :  (c) 2016        Finn Teegen
<a name="line-5"></a>    License     :  BSD-3-clause
<a name="line-6"></a>
<a name="line-7"></a>    Maintainer  :  bjp@informatik.uni-kiel.de
<a name="line-8"></a>    Stability   :  experimental
<a name="line-9"></a>    Portability :  portable
<a name="line-10"></a>
<a name="line-11"></a>   This module modules provides the definitions for the internal
<a name="line-12"></a>   representation of kinds in the compiler.
<a name="line-13"></a>-}</span>
<a name="line-14"></a>
<a name="line-15"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Base</span><span class='hs-varop'>.</span><span class='hs-conid'>Kinds</span> <span class='hs-keyword'>where</span>
<a name="line-16"></a>
<a name="line-17"></a><span class='hs-comment'>-- A kind is either *, which is the kind of a value's type, a kind</span>
<a name="line-18"></a><span class='hs-comment'>-- variable, or an arrow kind. Kind variables are used internally during</span>
<a name="line-19"></a><span class='hs-comment'>-- kind inference. Kind variables are not supported in Curry kind</span>
<a name="line-20"></a><span class='hs-comment'>-- expressions and all kind variables that remain free after kind</span>
<a name="line-21"></a><span class='hs-comment'>-- inference are instantiated to *.</span>
<a name="line-22"></a>
<a name="line-23"></a><a name="Kind"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Kind</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>KindStar</span>
<a name="line-24"></a>          <span class='hs-keyglyph'>|</span> <span class='hs-conid'>KindVariable</span> <span class='hs-conid'>Int</span>
<a name="line-25"></a>          <span class='hs-keyglyph'>|</span> <span class='hs-conid'>KindArrow</span> <span class='hs-conid'>Kind</span> <span class='hs-conid'>Kind</span>
<a name="line-26"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-27"></a>
<a name="line-28"></a><a name="kindArity"></a><span class='hs-comment'>-- |The function 'kindArity' computes the arity n of a kind.</span>
<a name="line-29"></a><span class='hs-definition'>kindArity</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Kind</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span>
<a name="line-30"></a><span class='hs-definition'>kindArity</span> <span class='hs-layout'>(</span><span class='hs-conid'>KindArrow</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>1</span> <span class='hs-varop'>+</span> <span class='hs-varid'>kindArity</span> <span class='hs-varid'>k</span>
<a name="line-31"></a><span class='hs-definition'>kindArity</span> <span class='hs-keyword'>_</span>               <span class='hs-keyglyph'>=</span> <span class='hs-num'>0</span>
<a name="line-32"></a>
<a name="line-33"></a><a name="kindVars"></a><span class='hs-comment'>-- |The function 'kindVars' returns a list of all kind variables</span>
<a name="line-34"></a><span class='hs-comment'>-- occurring in a kind.</span>
<a name="line-35"></a><span class='hs-definition'>kindVars</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Kind</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int</span><span class='hs-keyglyph'>]</span>
<a name="line-36"></a><span class='hs-definition'>kindVars</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>vars</span> <span class='hs-varid'>k</span> <span class='hs-conid'>[]</span>
<a name="line-37"></a>  <span class='hs-keyword'>where</span>
<a name="line-38"></a>    <span class='hs-varid'>vars</span> <span class='hs-conid'>KindStar</span>          <span class='hs-varid'>kvs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>kvs</span>
<a name="line-39"></a>    <span class='hs-varid'>vars</span> <span class='hs-layout'>(</span><span class='hs-conid'>KindVariable</span> <span class='hs-varid'>kv</span><span class='hs-layout'>)</span> <span class='hs-varid'>kvs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>kv</span> <span class='hs-conop'>:</span> <span class='hs-varid'>kvs</span>
<a name="line-40"></a>    <span class='hs-varid'>vars</span> <span class='hs-layout'>(</span><span class='hs-conid'>KindArrow</span> <span class='hs-varid'>k1</span> <span class='hs-varid'>k2</span><span class='hs-layout'>)</span> <span class='hs-varid'>kvs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>vars</span> <span class='hs-varid'>k1</span> <span class='hs-varop'>$</span> <span class='hs-varid'>vars</span> <span class='hs-varid'>k2</span> <span class='hs-varid'>kvs</span>
<a name="line-41"></a>
<a name="line-42"></a><a name="defaultKind"></a><span class='hs-comment'>-- |The function 'defaultKind' instantiates all kind variables</span>
<a name="line-43"></a><span class='hs-comment'>-- occurring in a kind to *.</span>
<a name="line-44"></a><span class='hs-definition'>defaultKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Kind</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Kind</span>
<a name="line-45"></a><span class='hs-definition'>defaultKind</span> <span class='hs-layout'>(</span><span class='hs-conid'>KindArrow</span> <span class='hs-varid'>k1</span> <span class='hs-varid'>k2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>KindArrow</span> <span class='hs-layout'>(</span><span class='hs-varid'>defaultKind</span> <span class='hs-varid'>k1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>defaultKind</span> <span class='hs-varid'>k2</span><span class='hs-layout'>)</span>
<a name="line-46"></a><span class='hs-definition'>defaultKind</span> <span class='hs-keyword'>_</span>                 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>KindStar</span>
<a name="line-47"></a>
<a name="line-48"></a><a name="simpleKind"></a><span class='hs-comment'>-- |The function 'simpleKind' returns the kind of a type</span>
<a name="line-49"></a><span class='hs-comment'>-- constructor with arity n whose arguments all have kind *.</span>
<a name="line-50"></a><span class='hs-definition'>simpleKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Kind</span>
<a name="line-51"></a><span class='hs-definition'>simpleKind</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldr</span> <span class='hs-conid'>KindArrow</span> <span class='hs-conid'>KindStar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>replicate</span> <span class='hs-varid'>n</span> <span class='hs-conid'>KindStar</span>
<a name="line-52"></a>
<a name="line-53"></a><a name="isSimpleKind"></a><span class='hs-comment'>-- |The function 'isSimpleKind' returns whether a kind is simple or not.</span>
<a name="line-54"></a><span class='hs-definition'>isSimpleKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Kind</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-55"></a><span class='hs-definition'>isSimpleKind</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>k</span> <span class='hs-varop'>==</span> <span class='hs-varid'>simpleKind</span> <span class='hs-layout'>(</span><span class='hs-varid'>kindArity</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
</pre></body>
</html>