/usr/share/doc/libghc-curry-frontend-doc/html/Env-TypeConstructor.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 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Env.TypeConstructor</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="file:///usr/share/javascript/mathjax/MathJax.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Env-TypeConstructor.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Env-TypeConstructor.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">curry-frontend-1.0.1: Compile the functional logic language Curry to several
intermediate formats</p></div><div id="content"><div id="module-header"><table class="info"><tr><th valign="top">Copyright</th><td>(c) 2002 - 2004 Wolfgang Lux<br />2011 Björn Peemöller<br />2016 Finn Teegen</td></tr><tr><th>License</th><td>BSD-3-clause</td></tr><tr><th>Maintainer</th><td>bjp@informatik.uni-kiel.de</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Env.TypeConstructor</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>For all defined types the compiler must maintain kind information.
For algebraic data types and renaming types the compiler also records
all data constructors belonging to that type, for alias types the
type expression to be expanded is saved. Futhermore, recording the
arity is necessary for alias types because the right hand side, i.e.,
the type expression, can have arbitrary kind and therefore the type
alias' arity cannot be determined from its own kind. For instance,
the type alias type List = [] has the kind * -> *, but its arity is 0.
In order to manage the import and export of types, the names of the
original definitions are also recorded. On import two types are
considered equal if their original names match.</p><p>The information for a data constructor comprises the number of
existentially quantified type variables, the context and the list
of the argument types. Note that renaming type constructors have only
one type argument.</p><p>For type classes the all their methods are saved. Type classes are
recorded in the type constructor environment because type constructors
and type classes share a common name space.</p><p>For type variables only their kind is recorded in the environment.</p><p>Importing and exporting algebraic data types and renaming types is
complicated by the fact that the constructors of the type may be
(partially) hidden in the interface. This facilitates the definition
of abstract data types. An abstract type is always represented as a
data type without constructors in the interface regardless of whether
it is defined as a data type or as a renaming type. When only some
constructors of a data type are hidden, those constructors are
replaced by underscores in the interface. Furthermore, if the
right-most constructors of a data type are hidden, they are not
exported at all in order to make the interface more stable against
changes which are private to the module.</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:TypeInfo" class="def">TypeInfo</a> <a href="src/Env-TypeConstructor.html#TypeInfo" class="link">Source</a> <a href="#t:TypeInfo" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:DataType" class="def">DataType</a> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="Base-Kinds.html#t:Kind">Kind</a> [<a href="Base-Types.html#t:DataConstr">DataConstr</a>]</td><td class="doc empty"> </td></tr><tr><td class="src"><a id="v:RenamingType" class="def">RenamingType</a> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="Base-Kinds.html#t:Kind">Kind</a> <a href="Base-Types.html#t:DataConstr">DataConstr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a id="v:AliasType" class="def">AliasType</a> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="Base-Kinds.html#t:Kind">Kind</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Data-Int.html#t:Int">Int</a> <a href="Base-Types.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a id="v:TypeClass" class="def">TypeClass</a> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="Base-Kinds.html#t:Kind">Kind</a> [<a href="Base-Types.html#t:ClassMethod">ClassMethod</a>]</td><td class="doc empty"> </td></tr><tr><td class="src"><a id="v:TypeVar" class="def">TypeVar</a> <a href="Base-Kinds.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:TypeInfo" class="caption collapser" onclick="toggleSection('i:TypeInfo')">Instances</p><div id="section.i:TypeInfo" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:TypeInfo:Show:1" class="instance expander" onclick="toggleSection('i:id:TypeInfo:Show:1')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Text-Show.html#t:Show">Show</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a></span> <a href="src/Env-TypeConstructor.html#line-75" class="link">Source</a> <a href="#t:TypeInfo" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:TypeInfo:Show:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Data-String.html#t:String">String</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a>] -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:TypeInfo:Pretty:2" class="instance expander" onclick="toggleSection('i:id:TypeInfo:Pretty:2')"></span> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Pretty.html#t:Pretty">Pretty</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a></span> <a href="src/Env-TypeConstructor.html#line-101" class="link">Source</a> <a href="#t:TypeInfo" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:TypeInfo:Pretty:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:pPrint">pPrint</a> :: <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/pretty-1.1.3.3/Text-PrettyPrint.html#t:Doc">Doc</a> <a href="#v:pPrint" class="selflink">#</a></p><p class="src"><a href="#v:pPrintPrec">pPrintPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/pretty-1.1.3.3/Text-PrettyPrint.html#t:Doc">Doc</a> <a href="#v:pPrintPrec" class="selflink">#</a></p><p class="src"><a href="#v:pPrintList">pPrintList</a> :: [<a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a>] -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/pretty-1.1.3.3/Text-PrettyPrint.html#t:Doc">Doc</a> <a href="#v:pPrintList" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:TypeInfo:Entity:3" class="instance expander" onclick="toggleSection('i:id:TypeInfo:Entity:3')"></span> <a href="Base-TopEnv.html#t:Entity">Entity</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a></span> <a href="src/Env-TypeConstructor.html#line-77" class="link">Source</a> <a href="#t:TypeInfo" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:TypeInfo:Entity:3" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:origName">origName</a> :: <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="src/Base-TopEnv.html#origName" class="link">Source</a> <a href="#v:origName" class="selflink">#</a></p><p class="src"><a href="#v:merge">merge</a> :: <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> <a href="src/Base-TopEnv.html#merge" class="link">Source</a> <a href="#v:merge" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:TypeInfo:SubstKind:4" class="instance expander" onclick="toggleSection('i:id:TypeInfo:SubstKind:4')"></span> <a href="Base-KindSubst.html#t:SubstKind">SubstKind</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a></span> <a href="src/Base-KindSubst.html#line-40" class="link">Source</a> <a href="#t:SubstKind" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:id:TypeInfo:SubstKind:4" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:subst">subst</a> :: <a href="Base-KindSubst.html#t:KindSubst">KindSubst</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> <a href="src/Base-KindSubst.html#subst" class="link">Source</a> <a href="#v:subst" class="selflink">#</a></p></div></div></td></tr></table></div></div></div><div class="top"><p class="src"><a id="v:tcKind" class="def">tcKind</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="Base-Kinds.html#t:Kind">Kind</a> <a href="src/Env-TypeConstructor.html#tcKind" class="link">Source</a> <a href="#v:tcKind" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:clsKind" class="def">clsKind</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="Base-Kinds.html#t:Kind">Kind</a> <a href="src/Env-TypeConstructor.html#clsKind" class="link">Source</a> <a href="#v:clsKind" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:varKind" class="def">varKind</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:Ident">Ident</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="Base-Kinds.html#t:Kind">Kind</a> <a href="src/Env-TypeConstructor.html#varKind" class="link">Source</a> <a href="#v:varKind" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:clsMethods" class="def">clsMethods</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> [<a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:Ident">Ident</a>] <a href="src/Env-TypeConstructor.html#clsMethods" class="link">Source</a> <a href="#v:clsMethods" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:TCEnv" class="def">TCEnv</a> = <a href="Base-TopEnv.html#t:TopEnv">TopEnv</a> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> <a href="src/Env-TypeConstructor.html#TCEnv" class="link">Source</a> <a href="#t:TCEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:initTCEnv" class="def">initTCEnv</a> :: <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> <a href="src/Env-TypeConstructor.html#initTCEnv" class="link">Source</a> <a href="#v:initTCEnv" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:bindTypeInfo" class="def">bindTypeInfo</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:Ident">Ident</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> <a href="src/Env-TypeConstructor.html#bindTypeInfo" class="link">Source</a> <a href="#v:bindTypeInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:rebindTypeInfo" class="def">rebindTypeInfo</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:Ident">Ident</a> -> <a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> <a href="src/Env-TypeConstructor.html#rebindTypeInfo" class="link">Source</a> <a href="#v:rebindTypeInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:lookupTypeInfo" class="def">lookupTypeInfo</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:Ident">Ident</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> [<a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a>] <a href="src/Env-TypeConstructor.html#lookupTypeInfo" class="link">Source</a> <a href="#v:lookupTypeInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:qualLookupTypeInfo" class="def">qualLookupTypeInfo</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> [<a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a>] <a href="src/Env-TypeConstructor.html#qualLookupTypeInfo" class="link">Source</a> <a href="#v:qualLookupTypeInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:qualLookupTypeInfoUnique" class="def">qualLookupTypeInfoUnique</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> [<a href="Env-TypeConstructor.html#t:TypeInfo">TypeInfo</a>] <a href="src/Env-TypeConstructor.html#qualLookupTypeInfoUnique" class="link">Source</a> <a href="#v:qualLookupTypeInfoUnique" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getOrigName" class="def">getOrigName</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:ModuleIdent">ModuleIdent</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> <a href="src/Env-TypeConstructor.html#getOrigName" class="link">Source</a> <a href="#v:getOrigName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:reverseLookupByOrigName" class="def">reverseLookupByOrigName</a> :: <a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a> -> <a href="Env-TypeConstructor.html#t:TCEnv">TCEnv</a> -> [<a href="file:///usr/share/doc/libghc-curry-base-doc/html/Curry-Base-Ident.html#t:QualIdent">QualIdent</a>] <a href="src/Env-TypeConstructor.html#reverseLookupByOrigName" class="link">Source</a> <a href="#v:reverseLookupByOrigName" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.3</p></div></body></html>
|