<!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>Language.Haskell.TH.Syntax</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_Language-Haskell-TH-Syntax.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">template-haskell-2.5.0.0</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>libraries@haskell.org</td></tr></table><p class="caption">Language.Haskell.TH.Syntax</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Names </a></li><li><a href="#g:2">The algebraic data types </a></li><li><a href="#g:3">Internal functions </a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Abstract syntax definitions for Template Haskell. </p></div></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">class</span> (<a href="../base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="../base-4.3.1.0/Control-Monad.html#t:Functor">Functor</a> m) => <a href="#t:Quasi">Quasi</a> m <span class="keyword">where</span><ul class="subs"><li><a href="#v:qNewName">qNewName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> m <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li><a href="#v:qReport">qReport</a> :: <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> m ()</li><li><a href="#v:qRecover">qRecover</a> :: m a -> m a -> m a</li><li><a href="#v:qReify">qReify</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> m <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></li><li><a href="#v:qClassInstances">qClassInstances</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> m [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</li><li><a href="#v:qLocation">qLocation</a> :: m <a href="Language-Haskell-TH-Syntax.html#t:Loc">Loc</a></li><li><a href="#v:qRunIO">qRunIO</a> :: <a href="../base-4.3.1.0/System-IO.html#t:IO">IO</a> a -> m a</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="#t:Lift">Lift</a> t <span class="keyword">where</span><ul class="subs"><li><a href="#v:lift">lift</a> :: t -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></li></ul></li><li class="src short"><a href="#v:liftString">liftString</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:Q">Q</a> a</li><li class="src short"><a href="#v:runQ">runQ</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Quasi">Quasi</a> m => <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> m a</li><li class="src short"><a href="#v:report">report</a> :: <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> ()</li><li class="src short"><a href="#v:recover">recover</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</li><li class="src short"><a href="#v:reify">reify</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></li><li class="src short"><a href="#v:location">location</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Loc">Loc</a></li><li class="src short"><a href="#v:runIO">runIO</a> :: <a href="../base-4.3.1.0/System-IO.html#t:IO">IO</a> a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</li><li class="src short"><a href="#v:isClassInstance">isClassInstance</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:classInstances">classInstances</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:Name">Name</a> = <a href="#v:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></li><li class="src short"><a href="#v:mkName">mkName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:newName">newName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:nameBase">nameBase</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:nameModule">nameModule</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showName">showName</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showName-39-">showName'</a> :: <a href="Language-Haskell-TH-Syntax.html#t:NameIs">NameIs</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:NameIs">NameIs</a> <ul class="subs"><li>= <a href="#v:Alone">Alone</a> </li><li>| <a href="#v:Applied">Applied</a> </li><li>| <a href="#v:Infix">Infix</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Dec">Dec</a> <ul class="subs"><li>= <a href="#v:FunD">FunD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a>] </li><li>| <a href="#v:ValD">ValD</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] </li><li>| <a href="#v:DataD">DataD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] </li><li>| <a href="#v:NewtypeD">NewtypeD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] </li><li>| <a href="#v:TySynD">TySynD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:ClassD">ClassD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] [<a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] </li><li>| <a href="#v:InstanceD">InstanceD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] </li><li>| <a href="#v:SigD">SigD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:ForeignD">ForeignD</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a> </li><li>| <a href="#v:PragmaD">PragmaD</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a> </li><li>| <a href="#v:FamilyD">FamilyD</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a>) </li><li>| <a href="#v:DataInstD">DataInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] </li><li>| <a href="#v:NewtypeInstD">NewtypeInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] </li><li>| <a href="#v:TySynInstD">TySynInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Exp">Exp</a> <ul class="subs"><li>= <a href="#v:VarE">VarE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:ConE">ConE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:LitE">LitE</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a> </li><li>| <a href="#v:AppE">AppE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:InfixE">InfixE</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>) <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>) </li><li>| <a href="#v:LamE">LamE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:TupE">TupE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>] </li><li>| <a href="#v:CondE">CondE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:LetE">LetE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:CaseE">CaseE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> [<a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a>] </li><li>| <a href="#v:DoE">DoE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>] </li><li>| <a href="#v:CompE">CompE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>] </li><li>| <a href="#v:ArithSeqE">ArithSeqE</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a> </li><li>| <a href="#v:ListE">ListE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>] </li><li>| <a href="#v:SigE">SigE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:RecConE">RecConE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldExp">FieldExp</a>] </li><li>| <a href="#v:RecUpdE">RecUpdE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldExp">FieldExp</a>] </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Con">Con</a> <ul class="subs"><li>= <a href="#v:NormalC">NormalC</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a>] </li><li>| <a href="#v:RecC">RecC</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:VarStrictType">VarStrictType</a>] </li><li>| <a href="#v:InfixC">InfixC</a> <a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a> </li><li>| <a href="#v:ForallC">ForallC</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Type">Type</a> <ul class="subs"><li>= <a href="#v:ForallT">ForallT</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:VarT">VarT</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:ConT">ConT</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:TupleT">TupleT</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> </li><li>| <a href="#v:ArrowT">ArrowT</a> </li><li>| <a href="#v:ListT">ListT</a> </li><li>| <a href="#v:AppT">AppT</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:SigT">SigT</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:TyVarBndr">TyVarBndr</a> <ul class="subs"><li>= <a href="#v:PlainTV">PlainTV</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:KindedTV">KindedTV</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Kind">Kind</a> <ul class="subs"><li>= <a href="#v:StarK">StarK</a> </li><li>| <a href="#v:ArrowK">ArrowK</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a> </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:Cxt">Cxt</a> = [<a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:Pred">Pred</a> <ul class="subs"><li>= <a href="#v:ClassP">ClassP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] </li><li>| <a href="#v:EqualP">EqualP</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Match">Match</a> = <a href="#v:Match">Match</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:Clause">Clause</a> = <a href="#v:Clause">Clause</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:Body">Body</a> <ul class="subs"><li>= <a href="#v:GuardedB">GuardedB</a> [(<a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a>, <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>)] </li><li>| <a href="#v:NormalB">NormalB</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Guard">Guard</a> <ul class="subs"><li>= <a href="#v:NormalG">NormalG</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:PatG">PatG</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>] </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Stmt">Stmt</a> <ul class="subs"><li>= <a href="#v:BindS">BindS</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:LetS">LetS</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] </li><li>| <a href="#v:NoBindS">NoBindS</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:ParS">ParS</a> [[<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>]] </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Range">Range</a> <ul class="subs"><li>= <a href="#v:FromR">FromR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:FromThenR">FromThenR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:FromToR">FromToR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li><li>| <a href="#v:FromThenToR">FromThenToR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Lit">Lit</a> <ul class="subs"><li>= <a href="#v:CharL">CharL</a> <a href="../base-4.3.1.0/Data-Char.html#t:Char">Char</a> </li><li>| <a href="#v:StringL">StringL</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> </li><li>| <a href="#v:IntegerL">IntegerL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a> </li><li>| <a href="#v:RationalL">RationalL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a> </li><li>| <a href="#v:IntPrimL">IntPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a> </li><li>| <a href="#v:WordPrimL">WordPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a> </li><li>| <a href="#v:FloatPrimL">FloatPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a> </li><li>| <a href="#v:DoublePrimL">DoublePrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a> </li><li>| <a href="#v:StringPrimL">StringPrimL</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Pat">Pat</a> <ul class="subs"><li>= <a href="#v:LitP">LitP</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a> </li><li>| <a href="#v:VarP">VarP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> </li><li>| <a href="#v:TupP">TupP</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] </li><li>| <a href="#v:ConP">ConP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] </li><li>| <a href="#v:InfixP">InfixP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> </li><li>| <a href="#v:TildeP">TildeP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> </li><li>| <a href="#v:BangP">BangP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> </li><li>| <a href="#v:AsP">AsP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> </li><li>| <a href="#v:WildP">WildP</a> </li><li>| <a href="#v:RecP">RecP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldPat">FieldPat</a>] </li><li>| <a href="#v:ListP">ListP</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] </li><li>| <a href="#v:SigP">SigP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:ViewP">ViewP</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:FieldExp">FieldExp</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>)</li><li class="src short"><span class="keyword">type</span> <a href="#t:FieldPat">FieldPat</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>)</li><li class="src short"><span class="keyword">data</span> <a href="#t:ClassInstance">ClassInstance</a> = <a href="#v:ClassInstance">ClassInstance</a> {<ul class="subs"><li><a href="#v:ci_dfun">ci_dfun</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li><a href="#v:ci_tvs">ci_tvs</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>]</li><li><a href="#v:ci_cxt">ci_cxt</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a></li><li><a href="#v:ci_cls">ci_cls</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li><a href="#v:ci_tys">ci_tys</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>]</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:Strict">Strict</a> <ul class="subs"><li>= <a href="#v:IsStrict">IsStrict</a> </li><li>| <a href="#v:NotStrict">NotStrict</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Foreign">Foreign</a> <ul class="subs"><li>= <a href="#v:ImportF">ImportF</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li><li>| <a href="#v:ExportF">ExportF</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Callconv">Callconv</a> <ul class="subs"><li>= <a href="#v:CCall">CCall</a> </li><li>| <a href="#v:StdCall">StdCall</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Safety">Safety</a> <ul class="subs"><li>= <a href="#v:Unsafe">Unsafe</a> </li><li>| <a href="#v:Safe">Safe</a> </li><li>| <a href="#v:Threadsafe">Threadsafe</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Pragma">Pragma</a> <ul class="subs"><li>= <a href="#v:InlineP">InlineP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a> </li><li>| <a href="#v:SpecialiseP">SpecialiseP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a>) </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:InlineSpec">InlineSpec</a> = <a href="#v:InlineSpec">InlineSpec</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a>, <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>))</li><li class="src short"><span class="keyword">type</span> <a href="#t:StrictType">StrictType</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a>, <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>)</li><li class="src short"><span class="keyword">type</span> <a href="#t:VarStrictType">VarStrictType</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a>, <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>)</li><li class="src short"><span class="keyword">data</span> <a href="#t:FunDep">FunDep</a> = <a href="#v:FunDep">FunDep</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:FamFlavour">FamFlavour</a> <ul class="subs"><li>= <a href="#v:TypeFam">TypeFam</a> </li><li>| <a href="#v:DataFam">DataFam</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Info">Info</a> <ul class="subs"><li>= <a href="#v:ClassI">ClassI</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a> [<a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a>] </li><li>| <a href="#v:ClassOpI">ClassOpI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a> </li><li>| <a href="#v:TyConI">TyConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a> </li><li>| <a href="#v:PrimTyConI">PrimTyConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> </li><li>| <a href="#v:DataConI">DataConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a> </li><li>| <a href="#v:VarI">VarI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>) <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a> </li><li>| <a href="#v:TyVarI">TyVarI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Loc">Loc</a> = <a href="#v:Loc">Loc</a> {<ul class="subs"><li><a href="#v:loc_filename">loc_filename</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li><a href="#v:loc_package">loc_package</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li><a href="#v:loc_module">loc_module</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li><a href="#v:loc_start">loc_start</a> :: <a href="Language-Haskell-TH-Syntax.html#t:CharPos">CharPos</a></li><li><a href="#v:loc_end">loc_end</a> :: <a href="Language-Haskell-TH-Syntax.html#t:CharPos">CharPos</a></li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:CharPos">CharPos</a> = (<a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>)</li><li class="src short"><span class="keyword">data</span> <a href="#t:Fixity">Fixity</a> = <a href="#v:Fixity">Fixity</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:FixityDirection">FixityDirection</a> <ul class="subs"><li>= <a href="#v:InfixL">InfixL</a> </li><li>| <a href="#v:InfixR">InfixR</a> </li><li>| <a href="#v:InfixN">InfixN</a> </li></ul></li><li class="src short"><a href="#v:defaultFixity">defaultFixity</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></li><li class="src short"><a href="#v:maxPrecedence">maxPrecedence</a> :: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:returnQ">returnQ</a> :: a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</li><li class="src short"><a href="#v:bindQ">bindQ</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> (a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> b) -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> b</li><li class="src short"><a href="#v:sequenceQ">sequenceQ</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> [a]</li><li class="src short"><span class="keyword">data</span> <a href="#t:NameFlavour">NameFlavour</a> <ul class="subs"><li>= <a href="#v:NameS">NameS</a> </li><li>| <a href="#v:NameQ">NameQ</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a> </li><li>| <a href="#v:NameU">NameU</a> Int# </li><li>| <a href="#v:NameL">NameL</a> Int# </li><li>| <a href="#v:NameG">NameG</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:NameSpace">NameSpace</a> <ul class="subs"><li>= <a href="#v:VarName">VarName</a> </li><li>| <a href="#v:DataName">DataName</a> </li><li>| <a href="#v:TcClsName">TcClsName</a> </li></ul></li><li class="src short"><a href="#v:mkNameG_v">mkNameG_v</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:mkNameG_d">mkNameG_d</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:mkNameG_tc">mkNameG_tc</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Uniq">Uniq</a> = <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:mkNameL">mkNameL</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Uniq">Uniq</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:mkNameU">mkNameU</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Uniq">Uniq</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:tupleTypeName">tupleTypeName</a> :: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><a href="#v:tupleDataName">tupleDataName</a> :: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:OccName">OccName</a> </li><li class="src short"><a href="#v:mkOccName">mkOccName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></li><li class="src short"><a href="#v:occString">occString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:ModName">ModName</a> </li><li class="src short"><a href="#v:mkModName">mkModName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></li><li class="src short"><a href="#v:modString">modString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:PkgName">PkgName</a> </li><li class="src short"><a href="#v:mkPkgName">mkPkgName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></li><li class="src short"><a href="#v:pkgString">pkgString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="../base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="../base-4.3.1.0/Control-Monad.html#t:Functor">Functor</a> m) => <a name="t:Quasi" class="def">Quasi</a> m <span class="keyword">where</span></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:qNewName" class="def">qNewName</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> m <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><p>Fresh names </p></td></tr></table></div><p class="src"><a name="v:qReport" class="def">qReport</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> m ()</td><td class="doc"><p>Report an error (True) or warning (False) ...but carry on; use <code><a href="../base-4.3.1.0/Control-Monad.html#v:fail">fail</a></code> to stop </p></td></tr></table></div><p class="src"><a name="v:qRecover" class="def">qRecover</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: m a</td><td class="doc"><p>the error handler </p></td></tr><tr><td class="src">-> m a</td><td class="doc"><p>action which may fail </p></td></tr><tr><td class="src">-> m a</td><td class="doc"><p>Recover from the monadic <code><a href="../base-4.3.1.0/Control-Monad.html#v:fail">fail</a></code> </p></td></tr></table></div><p class="src"><a name="v:qReify" class="def">qReify</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> m <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></p><p class="src"><a name="v:qClassInstances" class="def">qClassInstances</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> m [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</p><p class="src"><a name="v:qLocation" class="def">qLocation</a> :: m <a href="Language-Haskell-TH-Syntax.html#t:Loc">Loc</a></p><p class="src"><a name="v:qRunIO" class="def">qRunIO</a> :: <a href="../base-4.3.1.0/System-IO.html#t:IO">IO</a> a -> m a</p><div class="doc"><p>Input/output (dangerous) </p></div></div><div class="subs instances"><p id="control.i:Quasi" class="caption collapser" onclick="toggleSection('i:Quasi')">Instances</p><div id="section.i:Quasi" class="show"><table><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Quasi">Quasi</a> <a href="../base-4.3.1.0/System-IO.html#t:IO">IO</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Quasi">Quasi</a> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Lift" class="def">Lift</a> t <span class="keyword">where</span></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:lift" class="def">lift</a> :: t -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></p></div><div class="subs instances"><p id="control.i:Lift" class="caption collapser" onclick="toggleSection('i:Lift')">Instances</p><div id="section.i:Lift" class="show"><table><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> <a href="../base-4.3.1.0/Data-Char.html#t:Char">Char</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> [a]</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (<a href="../base-4.3.1.0/Data-Either.html#t:Either">Either</a> a b)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> c) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b, c)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> c, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> d) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b, c, d)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> c, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> d, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> e) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b, c, d, e)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> c, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> d, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> e, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> f) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b, c, d, e, f)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> a, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> b, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> c, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> d, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> e, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> f, <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> g) => <a href="Language-Haskell-TH-Syntax.html#t:Lift">Lift</a> (a, b, c, d, e, f, g)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:liftString" class="def">liftString</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Q" class="def">Q</a> a </p><div class="subs instances"><p id="control.i:Q" class="caption collapser" onclick="toggleSection('i:Q')">Instances</p><div id="section.i:Q" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Control-Monad.html#t:Functor">Functor</a> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Syntax.html#t:Quasi">Quasi</a> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:runQ" class="def">runQ</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Quasi">Quasi</a> m => <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> m a</p></div><div class="top"><p class="src"><a name="v:report" class="def">report</a> :: <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> ()</p></div><div class="top"><p class="src"><a name="v:recover" class="def">recover</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</td><td class="doc"><p>recover with this one </p></td></tr><tr><td class="src">-> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</td><td class="doc"><p>failing action </p></td></tr><tr><td class="src">-> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:reify" class="def">reify</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></p><div class="doc"><p><code><a href="Language-Haskell-TH-Syntax.html#v:reify">reify</a></code> looks up information about the <code><a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></code> </p></div></div><div class="top"><p class="src"><a name="v:location" class="def">location</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Loc">Loc</a></p><div class="doc"><p><code><a href="Language-Haskell-TH-Syntax.html#v:location">location</a></code> gives you the <code>Location</code> at which this computation is spliced. </p></div></div><div class="top"><p class="src"><a name="v:runIO" class="def">runIO</a> :: <a href="../base-4.3.1.0/System-IO.html#t:IO">IO</a> a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</p><div class="doc"><p>The <code><a href="Language-Haskell-TH-Syntax.html#v:runIO">runIO</a></code> function lets you run an I/O computation in the <code><a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></code> monad. Take care: you are guaranteed the ordering of calls to <code><a href="Language-Haskell-TH-Syntax.html#v:runIO">runIO</a></code> within a single <code><a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></code> computation, but not about the order in which splices are run. </p><p>Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself. </p></div></div><div class="top"><p class="src"><a name="v:isClassInstance" class="def">isClassInstance</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:classInstances" class="def">classInstances</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</p><div class="doc"><p><code><a href="Language-Haskell-TH-Syntax.html#v:classInstances">classInstances</a></code> looks up instaces of a class </p></div></div><h1 id="g:1">Names </h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Name" class="def">Name</a> </p><div class="doc"><p>For <a href="global.html">global</a> names (<code><a href="Language-Haskell-TH-Syntax.html#v:NameG">NameG</a></code>) we need a totally unique name, so we must include the name-space of the thing </p><p>For unique-numbered things (<code><a href="Language-Haskell-TH-Syntax.html#v:NameU">NameU</a></code>), we've got a unique reference anyway, so no need for name space </p><p>For dynamically bound thing (<code><a href="Language-Haskell-TH-Syntax.html#v:NameS">NameS</a></code>) we probably want them to in a context-dependent way, so again we don't want the name space. For example: </p><pre> let v = mkName "T" in [| data $v = $v |] </pre><p>Here we use the same Name for both type constructor and data constructor </p><p>NameL and NameG are bound *outside* the TH syntax tree either globally (NameG) or locally (NameL). Ex: </p><pre> f x = $(h [| (map, x) |]) </pre><p>The <code><a href="../base-4.3.1.0/Data-List.html#v:map">map</a></code> will be a NameG, and <code>x</code> wil be a NameL </p><p>These Names should never appear in a binding position in a TH syntax tree </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Name" class="def">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Name" class="caption collapser" onclick="toggleSection('i:Name')">Instances</p><div id="section.i:Name" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkName" class="def">mkName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p><div class="doc"><p>The string can have a <code><a href="../base-4.3.1.0/Prelude.html#v:.">.</a></code>, thus <a href="Foo-baz.html">Foo.baz</a>, giving a dynamically-bound qualified name, in which case we want to generate a NameQ </p><p>Parse the string to see if it has a <a href="-.html">.</a> in it so we know whether to generate a qualified or unqualified name It's a bit tricky because we need to parse </p><pre> Foo.Baz.x as Qual Foo.Baz x </pre><p>So we parse it from back to front </p></div></div><div class="top"><p class="src"><a name="v:newName" class="def">newName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:nameBase" class="def">nameBase</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p><div class="doc"><p>Base, unqualified name. </p></div></div><div class="top"><p class="src"><a name="v:nameModule" class="def">nameModule</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div><div class="top"><p class="src"><a name="v:showName" class="def">showName</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div><div class="top"><p class="src"><a name="v:showName-39-" class="def">showName'</a> :: <a href="Language-Haskell-TH-Syntax.html#t:NameIs">NameIs</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:NameIs" class="def">NameIs</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Alone" class="def">Alone</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Applied" class="def">Applied</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Infix" class="def">Infix</a></td><td class="doc empty"> </td></tr></table></div></div><h1 id="g:2">The algebraic data types </h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Dec" class="def">Dec</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:FunD" class="def">FunD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a>]</td><td class="doc"><pre>{ f p1 p2 = b where decs }</pre></td></tr><tr><td class="src"><a name="v:ValD" class="def">ValD</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc"><pre>{ p = b where decs }</pre></td></tr><tr><td class="src"><a name="v:DataD" class="def">DataD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</td><td class="doc"><pre>{ data Cxt x => T x = A x | B (T x) deriving (Z,W)}</pre></td></tr><tr><td class="src"><a name="v:NewtypeD" class="def">NewtypeD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</td><td class="doc"><pre>{ newtype Cxt x => T x = A (B x) deriving (Z,W)}</pre></td></tr><tr><td class="src"><a name="v:TySynD" class="def">TySynD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>{ type T x = (x,x) }</pre></td></tr><tr><td class="src"><a name="v:ClassD" class="def">ClassD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] [<a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc"><pre>{ class Eq a => Ord a where ds }</pre></td></tr><tr><td class="src"><a name="v:InstanceD" class="def">InstanceD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc"><pre>{ instance Show w => Show [w] where ds }</pre></td></tr><tr><td class="src"><a name="v:SigD" class="def">SigD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>{ length :: [a] -> Int }</pre></td></tr><tr><td class="src"><a name="v:ForeignD" class="def">ForeignD</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:PragmaD" class="def">PragmaD</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc"><pre>{ {-<a name=" INLINE [1] foo "></a>-} }</pre></td></tr><tr><td class="src"><a name="v:FamilyD" class="def">FamilyD</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a>)</td><td class="doc"><pre>{ type family T a b c :: * }</pre></td></tr><tr><td class="src"><a name="v:DataInstD" class="def">DataInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</td><td class="doc"><pre>{ data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W)}</pre></td></tr><tr><td class="src"><a name="v:NewtypeInstD" class="def">NewtypeInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</td><td class="doc"><pre>{ newtype instance Cxt x => T [x] = A (B x) deriving (Z,W)}</pre></td></tr><tr><td class="src"><a name="v:TySynInstD" class="def">TySynInstD</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>] <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>{ type instance T (Maybe x) = (x,x) }</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Dec" class="caption collapser" onclick="toggleSection('i:Dec')">Instances</p><div id="section.i:Dec" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Exp" class="def">Exp</a> </p><div class="doc"><p>The <code><a href="Language-Haskell-TH-Syntax.html#v:CompE">CompE</a></code> constructor represents a list comprehension, and takes a [<code><a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></code>]. The result expression of the comprehension is the *last* of these, and should be a <code><a href="Language-Haskell-TH-Syntax.html#v:NoBindS">NoBindS</a></code>. </p><p>E.g. translation: </p><pre> [ f x | x <- xs ] </pre><pre> CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))] </pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:VarE" class="def">VarE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>{ x }</pre></td></tr><tr><td class="src"><a name="v:ConE" class="def">ConE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>data T1 = C1 t1 t2; p = {C1} e1 e2</pre></td></tr><tr><td class="src"><a name="v:LitE" class="def">LitE</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc"><pre>{ 5 or <code>c</code>}</pre></td></tr><tr><td class="src"><a name="v:AppE" class="def">AppE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc"><pre>{ f x }</pre></td></tr><tr><td class="src"><a name="v:InfixE" class="def">InfixE</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>) <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>)</td><td class="doc"><pre>{x + y} or {(x+)} or {(+ x)} or {(+)}</pre><p>It's a bit gruesome to use an Exp as the operator, but how else can we distinguish constructors from non-constructors? Maybe there should be a var-or-con type? Or maybe we should leave it to the String itself? </p></td></tr><tr><td class="src"><a name="v:LamE" class="def">LamE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc"><pre>{ p1 p2 -> e }</pre></td></tr><tr><td class="src"><a name="v:TupE" class="def">TupE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>]</td><td class="doc"><pre>{ (e1,e2) }</pre></td></tr><tr><td class="src"><a name="v:CondE" class="def">CondE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc"><pre>{ if e1 then e2 else e3 }</pre></td></tr><tr><td class="src"><a name="v:LetE" class="def">LetE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>] <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc"><pre>{ let x=e1; y=e2 in e3 }</pre></td></tr><tr><td class="src"><a name="v:CaseE" class="def">CaseE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> [<a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a>]</td><td class="doc"><pre>{ case e of m1; m2 }</pre></td></tr><tr><td class="src"><a name="v:DoE" class="def">DoE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>]</td><td class="doc"><pre>{ do { p <- e1; e2 } }</pre></td></tr><tr><td class="src"><a name="v:CompE" class="def">CompE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>]</td><td class="doc"><pre>{ [ (x,y) | x <- xs, y <- ys ] }</pre></td></tr><tr><td class="src"><a name="v:ArithSeqE" class="def">ArithSeqE</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc"><pre>{ [ 1 ,2 .. 10 ] }</pre></td></tr><tr><td class="src"><a name="v:ListE" class="def">ListE</a> [<a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>]</td><td class="doc"><pre>{ [1,2,3] }</pre></td></tr><tr><td class="src"><a name="v:SigE" class="def">SigE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>{ e :: t }</pre></td></tr><tr><td class="src"><a name="v:RecConE" class="def">RecConE</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldExp">FieldExp</a>]</td><td class="doc"><pre>{ T { x = y, z = w } }</pre></td></tr><tr><td class="src"><a name="v:RecUpdE" class="def">RecUpdE</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldExp">FieldExp</a>]</td><td class="doc"><pre>{ (f x) { z = w } }</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Exp" class="caption collapser" onclick="toggleSection('i:Exp')">Instances</p><div id="section.i:Exp" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Con" class="def">Con</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:NormalC" class="def">NormalC</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a>]</td><td class="doc"><pre>C Int a</pre></td></tr><tr><td class="src"><a name="v:RecC" class="def">RecC</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:VarStrictType">VarStrictType</a>]</td><td class="doc"><pre>C { v :: Int, w :: a }</pre></td></tr><tr><td class="src"><a name="v:InfixC" class="def">InfixC</a> <a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:StrictType">StrictType</a></td><td class="doc"><pre>Int :+ a</pre></td></tr><tr><td class="src"><a name="v:ForallC" class="def">ForallC</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc"><pre>forall a. Eq a => C [a]</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Con" class="caption collapser" onclick="toggleSection('i:Con')">Instances</p><div id="section.i:Con" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Con">Con</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Type" class="def">Type</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ForallT" class="def">ForallT</a> [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>] <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>forall <a href="vars">vars</a>. <a href="ctxt">ctxt</a> -> <a href="type">type</a></pre></td></tr><tr><td class="src"><a name="v:VarT" class="def">VarT</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>a</pre></td></tr><tr><td class="src"><a name="v:ConT" class="def">ConT</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>T</pre></td></tr><tr><td class="src"><a name="v:TupleT" class="def">TupleT</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><pre>(,), (,,), etc.</pre></td></tr><tr><td class="src"><a name="v:ArrowT" class="def">ArrowT</a></td><td class="doc"><pre>-></pre></td></tr><tr><td class="src"><a name="v:ListT" class="def">ListT</a></td><td class="doc"><pre>[]</pre></td></tr><tr><td class="src"><a name="v:AppT" class="def">AppT</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>T a b</pre></td></tr><tr><td class="src"><a name="v:SigT" class="def">SigT</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc"><pre>t :: k</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Type" class="caption collapser" onclick="toggleSection('i:Type')">Instances</p><div id="section.i:Type" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:TyVarBndr" class="def">TyVarBndr</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:PlainTV" class="def">PlainTV</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>a</pre></td></tr><tr><td class="src"><a name="v:KindedTV" class="def">KindedTV</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc"><pre>(a :: k)</pre></td></tr></table></div><div class="subs instances"><p id="control.i:TyVarBndr" class="caption collapser" onclick="toggleSection('i:TyVarBndr')">Instances</p><div id="section.i:TyVarBndr" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Kind" class="def">Kind</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:StarK" class="def">StarK</a></td><td class="doc"><pre><code><a href="../base-4.3.1.0/Prelude.html#v:-42-">*</a></code></pre></td></tr><tr><td class="src"><a name="v:ArrowK" class="def">ArrowK</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc"><pre>k1 -> k2</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Kind" class="caption collapser" onclick="toggleSection('i:Kind')">Instances</p><div id="section.i:Kind" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Kind">Kind</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Cxt" class="def">Cxt</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src"> = [<a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a>]</td><td class="doc"><pre>(Eq a, Ord b)</pre></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Pred" class="def">Pred</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ClassP" class="def">ClassP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>]</td><td class="doc"><pre>Eq (Int, a)</pre></td></tr><tr><td class="src"><a name="v:EqualP" class="def">EqualP</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>F a ~ Bool</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Pred" class="caption collapser" onclick="toggleSection('i:Pred')">Instances</p><div id="section.i:Pred" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Pred">Pred</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Match" class="def">Match</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Match" class="def">Match</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc"><pre>case e of { pat -> body where decs }</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Match" class="caption collapser" onclick="toggleSection('i:Match')">Instances</p><div id="section.i:Match" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Match">Match</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Clause" class="def">Clause</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Clause" class="def">Clause</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>] <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc"><pre>f { p1 p2 = body where decs }</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Clause" class="caption collapser" onclick="toggleSection('i:Clause')">Instances</p><div id="section.i:Clause" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Clause">Clause</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Body" class="def">Body</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:GuardedB" class="def">GuardedB</a> [(<a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a>, <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>)]</td><td class="doc"><pre>f p { | e1 = e2 | e3 = e4 } where ds</pre></td></tr><tr><td class="src"><a name="v:NormalB" class="def">NormalB</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc"><pre>f p { = e } where ds</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Body" class="caption collapser" onclick="toggleSection('i:Body')">Instances</p><div id="section.i:Body" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Body">Body</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Guard" class="def">Guard</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:NormalG" class="def">NormalG</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:PatG" class="def">PatG</a> [<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>]</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Guard" class="caption collapser" onclick="toggleSection('i:Guard')">Instances</p><div id="section.i:Guard" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Guard">Guard</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Stmt" class="def">Stmt</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:BindS" class="def">BindS</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:LetS" class="def">LetS</a> [<a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:NoBindS" class="def">NoBindS</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:ParS" class="def">ParS</a> [[<a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a>]]</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Stmt" class="caption collapser" onclick="toggleSection('i:Stmt')">Instances</p><div id="section.i:Stmt" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Stmt">Stmt</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Range" class="def">Range</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:FromR" class="def">FromR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:FromThenR" class="def">FromThenR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:FromToR" class="def">FromToR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:FromThenToR" class="def">FromThenToR</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Range" class="caption collapser" onclick="toggleSection('i:Range')">Instances</p><div id="section.i:Range" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Range">Range</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Lit" class="def">Lit</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CharL" class="def">CharL</a> <a href="../base-4.3.1.0/Data-Char.html#t:Char">Char</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:StringL" class="def">StringL</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:IntegerL" class="def">IntegerL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a></td><td class="doc"><p>Used for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter? </p></td></tr><tr><td class="src"><a name="v:RationalL" class="def">RationalL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:IntPrimL" class="def">IntPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:WordPrimL" class="def">WordPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Integer">Integer</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:FloatPrimL" class="def">FloatPrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:DoublePrimL" class="def">DoublePrimL</a> <a href="../base-4.3.1.0/Prelude.html#t:Rational">Rational</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:StringPrimL" class="def">StringPrimL</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></td><td class="doc"><p>A primitive C-style string, type Addr# </p></td></tr></table></div><div class="subs instances"><p id="control.i:Lit" class="caption collapser" onclick="toggleSection('i:Lit')">Instances</p><div id="section.i:Lit" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Pat" class="def">Pat</a> </p><div class="doc"><p>Pattern in Haskell given in <code>{}</code> </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LitP" class="def">LitP</a> <a href="Language-Haskell-TH-Syntax.html#t:Lit">Lit</a></td><td class="doc"><pre>{ 5 or <code>c</code> }</pre></td></tr><tr><td class="src"><a name="v:VarP" class="def">VarP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><pre>{ x }</pre></td></tr><tr><td class="src"><a name="v:TupP" class="def">TupP</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>]</td><td class="doc"><pre>{ (p1,p2) }</pre></td></tr><tr><td class="src"><a name="v:ConP" class="def">ConP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>]</td><td class="doc"><pre>data T1 = C1 t1 t2; {C1 p1 p1} = e</pre></td></tr><tr><td class="src"><a name="v:InfixP" class="def">InfixP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc"><pre>foo ({x :+ y}) = e</pre></td></tr><tr><td class="src"><a name="v:TildeP" class="def">TildeP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc"><pre>{ ~p }</pre></td></tr><tr><td class="src"><a name="v:BangP" class="def">BangP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc"><pre>{ !p }</pre></td></tr><tr><td class="src"><a name="v:AsP" class="def">AsP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc"><pre>{ x @ p }</pre></td></tr><tr><td class="src"><a name="v:WildP" class="def">WildP</a></td><td class="doc"><pre>{ _ }</pre></td></tr><tr><td class="src"><a name="v:RecP" class="def">RecP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> [<a href="Language-Haskell-TH-Syntax.html#t:FieldPat">FieldPat</a>]</td><td class="doc"><pre>f (Pt { pointx = x }) = g x</pre></td></tr><tr><td class="src"><a name="v:ListP" class="def">ListP</a> [<a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>]</td><td class="doc"><pre>{ [1,2,3] }</pre></td></tr><tr><td class="src"><a name="v:SigP" class="def">SigP</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc"><pre>{ p :: t }</pre></td></tr><tr><td class="src"><a name="v:ViewP" class="def">ViewP</a> <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc"><pre>{ e -> p }</pre></td></tr></table></div><div class="subs instances"><p id="control.i:Pat" class="caption collapser" onclick="toggleSection('i:Pat')">Instances</p><div id="section.i:Pat" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:FieldExp" class="def">FieldExp</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Exp">Exp</a>)</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:FieldPat" class="def">FieldPat</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Pat">Pat</a>)</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ClassInstance" class="def">ClassInstance</a> </p><div class="doc"><p><code><a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a></code> desribes a single instance of a class </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ClassInstance" class="def">ClassInstance</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:ci_dfun" class="def">ci_dfun</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:ci_tvs" class="def">ci_tvs</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:TyVarBndr">TyVarBndr</a>]</dt><dd class="doc empty"> </dd><dt class="src"><a name="v:ci_cxt" class="def">ci_cxt</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Cxt">Cxt</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:ci_cls" class="def">ci_cls</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:ci_tys" class="def">ci_tys</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>]</dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:ClassInstance" class="caption collapser" onclick="toggleSection('i:ClassInstance')">Instances</p><div id="section.i:ClassInstance" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Strict" class="def">Strict</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:IsStrict" class="def">IsStrict</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:NotStrict" class="def">NotStrict</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Strict" class="caption collapser" onclick="toggleSection('i:Strict')">Instances</p><div id="section.i:Strict" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Foreign" class="def">Foreign</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ImportF" class="def">ImportF</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:ExportF" class="def">ExportF</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Foreign" class="caption collapser" onclick="toggleSection('i:Foreign')">Instances</p><div id="section.i:Foreign" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Foreign">Foreign</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Callconv" class="def">Callconv</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CCall" class="def">CCall</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:StdCall" class="def">StdCall</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Callconv" class="caption collapser" onclick="toggleSection('i:Callconv')">Instances</p><div id="section.i:Callconv" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Callconv">Callconv</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Safety" class="def">Safety</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Unsafe" class="def">Unsafe</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Safe" class="def">Safe</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Threadsafe" class="def">Threadsafe</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Safety" class="caption collapser" onclick="toggleSection('i:Safety')">Instances</p><div id="section.i:Safety" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Safety">Safety</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Pragma" class="def">Pragma</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:InlineP" class="def">InlineP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:SpecialiseP" class="def">SpecialiseP</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a>)</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Pragma" class="caption collapser" onclick="toggleSection('i:Pragma')">Instances</p><div id="section.i:Pragma" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Pragma">Pragma</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:InlineSpec" class="def">InlineSpec</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:InlineSpec" class="def">InlineSpec</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a>, <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>))</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:InlineSpec" class="caption collapser" onclick="toggleSection('i:InlineSpec')">Instances</p><div id="section.i:InlineSpec" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:InlineSpec">InlineSpec</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:StrictType" class="def">StrictType</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a>, <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>)</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:VarStrictType" class="def">VarStrictType</a> = (<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>, <a href="Language-Haskell-TH-Syntax.html#t:Strict">Strict</a>, <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a>)</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:FunDep" class="def">FunDep</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:FunDep" class="def">FunDep</a> [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>] [<a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a>]</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:FunDep" class="caption collapser" onclick="toggleSection('i:FunDep')">Instances</p><div id="section.i:FunDep" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:FunDep">FunDep</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:FamFlavour" class="def">FamFlavour</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:TypeFam" class="def">TypeFam</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:DataFam" class="def">DataFam</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:FamFlavour" class="caption collapser" onclick="toggleSection('i:FamFlavour')">Instances</p><div id="section.i:FamFlavour" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:FamFlavour">FamFlavour</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Info" class="def">Info</a> </p><div class="doc"><p>Obtained from <code><a href="Language-Haskell-TH-Syntax.html#v:reify">reify</a></code> in the <code><a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a></code> Monad. </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ClassI" class="def">ClassI</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a> [<a href="Language-Haskell-TH-Syntax.html#t:ClassInstance">ClassInstance</a>]</td><td class="doc"><p>A class is reified to its declaration and a list of its instances </p></td></tr><tr><td class="src"><a name="v:ClassOpI" class="def">ClassOpI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:TyConI" class="def">TyConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:PrimTyConI" class="def">PrimTyConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> <a href="../base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:DataConI" class="def">DataConI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:VarI" class="def">VarI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a> (<a href="../base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>) <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:TyVarI" class="def">TyVarI</a> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a> <a href="Language-Haskell-TH-Syntax.html#t:Type">Type</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Info" class="caption collapser" onclick="toggleSection('i:Info')">Instances</p><div id="section.i:Info" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-Haskell-TH-Ppr.html#t:Ppr">Ppr</a> <a href="Language-Haskell-TH-Syntax.html#t:Info">Info</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Loc" class="def">Loc</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Loc" class="def">Loc</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:loc_filename" class="def">loc_filename</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:loc_package" class="def">loc_package</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:loc_module" class="def">loc_module</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:loc_start" class="def">loc_start</a> :: <a href="Language-Haskell-TH-Syntax.html#t:CharPos">CharPos</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:loc_end" class="def">loc_end</a> :: <a href="Language-Haskell-TH-Syntax.html#t:CharPos">CharPos</a></dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CharPos" class="def">CharPos</a> = (<a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a>)</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Fixity" class="def">Fixity</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Fixity" class="def">Fixity</a> <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Fixity" class="caption collapser" onclick="toggleSection('i:Fixity')">Instances</p><div id="section.i:Fixity" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:FixityDirection" class="def">FixityDirection</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:InfixL" class="def">InfixL</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:InfixR" class="def">InfixR</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:InfixN" class="def">InfixN</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:FixityDirection" class="caption collapser" onclick="toggleSection('i:FixityDirection')">Instances</p><div id="section.i:FixityDirection" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Text-Show.html#t:Show">Show</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:FixityDirection">FixityDirection</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:defaultFixity" class="def">defaultFixity</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Fixity">Fixity</a></p></div><div class="top"><p class="src"><a name="v:maxPrecedence" class="def">maxPrecedence</a> :: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></p></div><h1 id="g:3">Internal functions </h1><div class="top"><p class="src"><a name="v:returnQ" class="def">returnQ</a> :: a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a</p></div><div class="top"><p class="src"><a name="v:bindQ" class="def">bindQ</a> :: <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a -> (a -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> b) -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> b</p></div><div class="top"><p class="src"><a name="v:sequenceQ" class="def">sequenceQ</a> :: [<a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> a] -> <a href="Language-Haskell-TH-Syntax.html#t:Q">Q</a> [a]</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:NameFlavour" class="def">NameFlavour</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:NameS" class="def">NameS</a></td><td class="doc"><p>An unqualified name; dynamically bound </p></td></tr><tr><td class="src"><a name="v:NameQ" class="def">NameQ</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc"><p>A qualified name; dynamically bound </p></td></tr><tr><td class="src"><a name="v:NameU" class="def">NameU</a> Int#</td><td class="doc"><p>A unique local name </p></td></tr><tr><td class="src"><a name="v:NameL" class="def">NameL</a> Int#</td><td class="doc"><p>Local name bound outside of the TH AST </p></td></tr><tr><td class="src"><a name="v:NameG" class="def">NameG</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc"><p>Global name bound outside of the TH AST: An original name (occurrences only, not binders) </p><p>Need the namespace too to be sure which thing we are naming </p></td></tr></table></div><div class="subs instances"><p id="control.i:NameFlavour" class="caption collapser" onclick="toggleSection('i:NameFlavour')">Instances</p><div id="section.i:NameFlavour" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></td><td class="doc"><p>Although the NameFlavour type is abstract, the Data instance is not. The reason for this is that currently we use Data to serialize values in annotations, and in order for that to work for Template Haskell names introduced via the 'x syntax we need gunfold on NameFlavour to work. Bleh! </p><p>The long term solution to this is to use the binary package for annotation serialization and then remove this instance. However, to do _that_ we need to wait on binary to become stable, since boot libraries cannot be upgraded seperately from GHC itself. </p><p>This instance cannot be derived automatically due to bug #2701 </p></td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:NameFlavour">NameFlavour</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:NameSpace" class="def">NameSpace</a> </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:VarName" class="def">VarName</a></td><td class="doc"><p>Variables </p></td></tr><tr><td class="src"><a name="v:DataName" class="def">DataName</a></td><td class="doc"><p>Data constructors </p></td></tr><tr><td class="src"><a name="v:TcClsName" class="def">TcClsName</a></td><td class="doc"><p>Type constructors and classes; Haskell has them in the same name space for now. </p></td></tr></table></div><div class="subs instances"><p id="control.i:NameSpace" class="caption collapser" onclick="toggleSection('i:NameSpace')">Instances</p><div id="section.i:NameSpace" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:NameSpace">NameSpace</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkNameG_v" class="def">mkNameG_v</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:mkNameG_d" class="def">mkNameG_d</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:mkNameG_tc" class="def">mkNameG_tc</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Uniq" class="def">Uniq</a> = <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></p></div><div class="top"><p class="src"><a name="v:mkNameL" class="def">mkNameL</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Uniq">Uniq</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p><div class="doc"><p>Only used internally </p></div></div><div class="top"><p class="src"><a name="v:mkNameU" class="def">mkNameU</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Uniq">Uniq</a> -> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></p><div class="doc"><p>Only used internally </p></div></div><div class="top"><p class="src"><a name="v:tupleTypeName" class="def">tupleTypeName</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><p>Type constructor </p></td></tr></table></div></div><div class="top"><p class="src"><a name="v:tupleDataName" class="def">tupleDataName</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="../base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="Language-Haskell-TH-Syntax.html#t:Name">Name</a></td><td class="doc"><p>Data constructor </p></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:OccName" class="def">OccName</a> </p><div class="subs instances"><p id="control.i:OccName" class="caption collapser" onclick="toggleSection('i:OccName')">Instances</p><div id="section.i:OccName" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkOccName" class="def">mkOccName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a></p></div><div class="top"><p class="src"><a name="v:occString" class="def">occString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:OccName">OccName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ModName" class="def">ModName</a> </p><div class="subs instances"><p id="control.i:ModName" class="caption collapser" onclick="toggleSection('i:ModName')">Instances</p><div id="section.i:ModName" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkModName" class="def">mkModName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a></p></div><div class="top"><p class="src"><a name="v:modString" class="def">modString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:ModName">ModName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:PkgName" class="def">PkgName</a> </p><div class="subs instances"><p id="control.i:PkgName" class="caption collapser" onclick="toggleSection('i:PkgName')">Instances</p><div id="section.i:PkgName" class="show"><table><tr><td class="src"><a href="../base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Data.html#t:Data">Data</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkPkgName" class="def">mkPkgName</a> :: <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a> -> <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a></p></div><div class="top"><p class="src"><a name="v:pkgString" class="def">pkgString</a> :: <a href="Language-Haskell-TH-Syntax.html#t:PkgName">PkgName</a> -> <a href="../base-4.3.1.0/Data-Char.html#t:String">String</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>