Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2921

ghc-7.4.2-4.mga5.i586.rpm

<!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>Kind</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Kind.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Kind</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Main data type
</a><ul><li><a href="#g:2">Deconstructing Kinds
</a></li><li><a href="#g:3">Predicates on Kinds
</a></li><li><a href="#g:4">Functions on variables
</a></li><li><a href="#g:5">Promotion related functions
</a></li></ul></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Kind">Kind</a> = <a href="Type.html#t:Type">Type</a></li><li class="src short"><a href="#v:typeKind">typeKind</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:anyKind">anyKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:liftedTypeKind">liftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:unliftedTypeKind">unliftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:openTypeKind">openTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:argTypeKind">argTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:ubxTupleKind">ubxTupleKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:constraintKind">constraintKind</a> :: <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:mkArrowKind">mkArrowKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:mkArrowKinds">mkArrowKinds</a> :: [<a href="Kind.html#t:Kind">Kind</a>] -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:anyKindTyCon">anyKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:liftedTypeKindTyCon">liftedTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:openTypeKindTyCon">openTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:unliftedTypeKindTyCon">unliftedTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:argTypeKindTyCon">argTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:ubxTupleKindTyCon">ubxTupleKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:constraintKindTyCon">constraintKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:tySuperKind">tySuperKind</a> :: SuperKind</li><li class="src short"><a href="#v:tySuperKindTyCon">tySuperKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></li><li class="src short"><a href="#v:pprKind">pprKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Outputable.html#t:SDoc">SDoc</a></li><li class="src short"><a href="#v:pprParendKind">pprParendKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Outputable.html#t:SDoc">SDoc</a></li><li class="src short"><a href="#v:kindFunResult">kindFunResult</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Type.html#t:KindOrType">KindOrType</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:kindAppResult">kindAppResult</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; [<a href="Type.html#t:Type">Type</a>] -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:synTyConResKind">synTyConResKind</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:splitKindFunTys">splitKindFunTys</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; ([<a href="Kind.html#t:Kind">Kind</a>], <a href="Kind.html#t:Kind">Kind</a>)</li><li class="src short"><a href="#v:splitKindFunTysN">splitKindFunTysN</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; ([<a href="Kind.html#t:Kind">Kind</a>], <a href="Kind.html#t:Kind">Kind</a>)</li><li class="src short"><a href="#v:splitKindFunTy_maybe">splitKindFunTy_maybe</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Kind.html#t:Kind">Kind</a>, <a href="Kind.html#t:Kind">Kind</a>)</li><li class="src short"><a href="#v:isLiftedTypeKind">isLiftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isUnliftedTypeKind">isUnliftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isOpenTypeKind">isOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isUbxTupleKind">isUbxTupleKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isArgTypeKind">isArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isConstraintKind">isConstraintKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isConstraintOrLiftedKind">isConstraintOrLiftedKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isKind">isKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isSuperKind">isSuperKind</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:noHashInKind">noHashInKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isLiftedTypeKindCon">isLiftedTypeKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isConstraintKindCon">isConstraintKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isAnyKind">isAnyKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isAnyKindCon">isAnyKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isSubArgTypeKind">isSubArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:tcIsSubArgTypeKind">tcIsSubArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isSubOpenTypeKind">isSubOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:tcIsSubOpenTypeKind">tcIsSubOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isSubKind">isSubKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:tcIsSubKind">tcIsSubKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:defaultKind">defaultKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:isSubKindCon">isSubKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:tcIsSubKindCon">tcIsSubKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isSubOpenTypeKindCon">isSubOpenTypeKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isKiVar">isKiVar</a> :: <a href="Var.html#t:TyVar">TyVar</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:splitKiTyVars">splitKiTyVars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>] -&gt; ([<a href="Var.html#t:KindVar">KindVar</a>], [<a href="Var.html#t:TyVar">TyVar</a>])</li><li class="src short"><a href="#v:partitionKiTyVars">partitionKiTyVars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>] -&gt; ([<a href="Var.html#t:KindVar">KindVar</a>], [<a href="Var.html#t:TyVar">TyVar</a>])</li><li class="src short"><a href="#v:kiVarsOfKind">kiVarsOfKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:kiVarsOfKinds">kiVarsOfKinds</a> :: [<a href="Kind.html#t:Kind">Kind</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:promoteType">promoteType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:isPromotableType">isPromotableType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isPromotableKind">isPromotableKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li></ul></div><div id="interface"><h1 id="g:1">Main data type
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Kind" class="def">Kind</a> = <a href="Type.html#t:Type">Type</a></p><div class="doc"><p>The key type representing kinds in the compiler.
 Invariant: a kind is always in one of these forms:
</p><pre> FunTy k1 k2
 TyConApp PrimTyCon [...]
 TyVar kv   -- (during inference only)
 ForAll ... -- (for top-level coercions)
</pre></div></div><div class="top"><p class="src"><a name="v:typeKind" class="def">typeKind</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p></div><div class="top"><p class="src"><a name="v:anyKind" class="def">anyKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:liftedTypeKind" class="def">liftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:unliftedTypeKind" class="def">unliftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:openTypeKind" class="def">openTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:argTypeKind" class="def">argTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:ubxTupleKind" class="def">ubxTupleKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:constraintKind" class="def">constraintKind</a> :: <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:mkArrowKind" class="def">mkArrowKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Given two kinds <code>k1</code> and <code>k2</code>, creates the <code><a href="Kind.html#t:Kind">Kind</a></code> <code>k1 -&gt; k2</code>
</p></div></div><div class="top"><p class="src"><a name="v:mkArrowKinds" class="def">mkArrowKinds</a> :: [<a href="Kind.html#t:Kind">Kind</a>] -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Iterated application of <code><a href="Kind.html#v:mkArrowKind">mkArrowKind</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:anyKindTyCon" class="def">anyKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:liftedTypeKindTyCon" class="def">liftedTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:openTypeKindTyCon" class="def">openTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:unliftedTypeKindTyCon" class="def">unliftedTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:argTypeKindTyCon" class="def">argTypeKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:ubxTupleKindTyCon" class="def">ubxTupleKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:constraintKindTyCon" class="def">constraintKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:tySuperKind" class="def">tySuperKind</a> :: SuperKind</p></div><div class="top"><p class="src"><a name="v:tySuperKindTyCon" class="def">tySuperKindTyCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between the <code><a href="Kind.html#t:Kind">Kind</a></code> <code><a href="TyCon.html#t:TyCon">TyCon</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:pprKind" class="def">pprKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Outputable.html#t:SDoc">SDoc</a></p></div><div class="top"><p class="src"><a name="v:pprParendKind" class="def">pprParendKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Outputable.html#t:SDoc">SDoc</a></p></div><h2 id="g:2">Deconstructing Kinds
</h2><div class="top"><p class="src"><a name="v:kindFunResult" class="def">kindFunResult</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Type.html#t:KindOrType">KindOrType</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Essentially <code>funResultTy</code> on kinds handling pi-types too
</p></div></div><div class="top"><p class="src"><a name="v:kindAppResult" class="def">kindAppResult</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; [<a href="Type.html#t:Type">Type</a>] -&gt; <a href="Kind.html#t:Kind">Kind</a></p></div><div class="top"><p class="src"><a name="v:synTyConResKind" class="def">synTyConResKind</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Find the result <code><a href="Kind.html#t:Kind">Kind</a></code> of a type synonym, 
 after applying it to its <code>arity</code> number of type variables
 Actually this function works fine on data types too, 
 but they'd always return <code><a href="../base-4.5.1.0/Prelude.html#v:-42-">*</a></code>, so we never need to ask
</p></div></div><div class="top"><p class="src"><a name="v:splitKindFunTys" class="def">splitKindFunTys</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; ([<a href="Kind.html#t:Kind">Kind</a>], <a href="Kind.html#t:Kind">Kind</a>)</p><div class="doc"><p>Essentially <code>splitFunTys</code> on kinds
</p></div></div><div class="top"><p class="src"><a name="v:splitKindFunTysN" class="def">splitKindFunTysN</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; ([<a href="Kind.html#t:Kind">Kind</a>], <a href="Kind.html#t:Kind">Kind</a>)</p><div class="doc"><p>Essentially <code>splitFunTysN</code> on kinds
</p></div></div><div class="top"><p class="src"><a name="v:splitKindFunTy_maybe" class="def">splitKindFunTy_maybe</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Kind.html#t:Kind">Kind</a>, <a href="Kind.html#t:Kind">Kind</a>)</p></div><h2 id="g:3">Predicates on Kinds
</h2><div class="top"><p class="src"><a name="v:isLiftedTypeKind" class="def">isLiftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isUnliftedTypeKind" class="def">isUnliftedTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isOpenTypeKind" class="def">isOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isUbxTupleKind" class="def">isUbxTupleKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isArgTypeKind" class="def">isArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isConstraintKind" class="def">isConstraintKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isConstraintOrLiftedKind" class="def">isConstraintOrLiftedKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isKind" class="def">isKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Is this a kind (i.e. a type-of-types)?
</p></div></div><div class="top"><p class="src"><a name="v:isSuperKind" class="def">isSuperKind</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Is this a super-kind (i.e. a type-of-kinds)?
</p></div></div><div class="top"><p class="src"><a name="v:noHashInKind" class="def">noHashInKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isLiftedTypeKindCon" class="def">isLiftedTypeKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isConstraintKindCon" class="def">isConstraintKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isAnyKind" class="def">isAnyKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>See <a href="Type.html#kind_subtyping">Type</a> for details of the distinction between these <code><a href="Kind.html#t:Kind">Kind</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:isAnyKindCon" class="def">isAnyKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isSubArgTypeKind" class="def">isSubArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>True of any sub-kind of ArgTypeKind 
</p></div></div><div class="top"><p class="src"><a name="v:tcIsSubArgTypeKind" class="def">tcIsSubArgTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>True of any sub-kind of ArgTypeKind 
</p></div></div><div class="top"><p class="src"><a name="v:isSubOpenTypeKind" class="def">isSubOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>True of any sub-kind of OpenTypeKind
</p><p>True of any sub-kind of OpenTypeKind
</p></div></div><div class="top"><p class="src"><a name="v:tcIsSubOpenTypeKind" class="def">tcIsSubOpenTypeKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>True of any sub-kind of OpenTypeKind
</p></div></div><div class="top"><p class="src"><a name="v:isSubKind" class="def">isSubKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:tcIsSubKind" class="def">tcIsSubKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:defaultKind" class="def">defaultKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Used when generalising: default OpenKind and ArgKind to *.
 See <a href="Type.html#kind_subtyping">Type</a> for more information on what that means
</p></div></div><div class="top"><p class="src"><a name="v:isSubKindCon" class="def">isSubKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code>kc1 `isSubKindCon` kc2</code> checks that <code>kc1</code> &lt;: <code>kc2</code>
</p></div></div><div class="top"><p class="src"><a name="v:tcIsSubKindCon" class="def">tcIsSubKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isSubOpenTypeKindCon" class="def">isSubOpenTypeKindCon</a> :: <a href="TyCon.html#t:TyCon">TyCon</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><h2 id="g:4">Functions on variables
</h2><div class="top"><p class="src"><a name="v:isKiVar" class="def">isKiVar</a> :: <a href="Var.html#t:TyVar">TyVar</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:splitKiTyVars" class="def">splitKiTyVars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>] -&gt; ([<a href="Var.html#t:KindVar">KindVar</a>], [<a href="Var.html#t:TyVar">TyVar</a>])</p></div><div class="top"><p class="src"><a name="v:partitionKiTyVars" class="def">partitionKiTyVars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>] -&gt; ([<a href="Var.html#t:KindVar">KindVar</a>], [<a href="Var.html#t:TyVar">TyVar</a>])</p></div><div class="top"><p class="src"><a name="v:kiVarsOfKind" class="def">kiVarsOfKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:kiVarsOfKinds" class="def">kiVarsOfKinds</a> :: [<a href="Kind.html#t:Kind">Kind</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><h2 id="g:5">Promotion related functions
</h2><div class="top"><p class="src"><a name="v:promoteType" class="def">promoteType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>Promotes a type to a kind. Assumes the argument is promotable.
</p></div></div><div class="top"><p class="src"><a name="v:isPromotableType" class="def">isPromotableType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isPromotableKind" class="def">isPromotableKind</a> :: <a href="Kind.html#t:Kind">Kind</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>