Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > e9b30bea7d2694baac43e530b6101023 > files > 71

ghc-haskell-src-devel-1.0.1.3-6.fc14.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>Language/Haskell/Syntax.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# OPTIONS_GHC -fglasgow-exts -cpp #-}</span>
<a name="line-2"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-3"></a><span class='hs-comment'>-- |</span>
<a name="line-4"></a><span class='hs-comment'>-- Module      :  Language.Haskell.Syntax</span>
<a name="line-5"></a><span class='hs-comment'>-- Copyright   :  (c) The GHC Team, 1997-2000</span>
<a name="line-6"></a><span class='hs-comment'>-- License     :  BSD-style (see the file libraries/base/LICENSE)</span>
<a name="line-7"></a><span class='hs-comment'>-- </span>
<a name="line-8"></a><span class='hs-comment'>-- Maintainer  :  libraries@haskell.org</span>
<a name="line-9"></a><span class='hs-comment'>-- Stability   :  experimental</span>
<a name="line-10"></a><span class='hs-comment'>-- Portability :  portable</span>
<a name="line-11"></a><span class='hs-comment'>--</span>
<a name="line-12"></a><span class='hs-comment'>-- A suite of datatypes describing the abstract syntax of Haskell 98</span>
<a name="line-13"></a><span class='hs-comment'>-- &lt;<a href="http://www.haskell.org/onlinereport/">http://www.haskell.org/onlinereport/</a>&gt; plus a few extensions:</span>
<a name="line-14"></a><span class='hs-comment'>--</span>
<a name="line-15"></a><span class='hs-comment'>--   * multi-parameter type classes</span>
<a name="line-16"></a><span class='hs-comment'>--</span>
<a name="line-17"></a><span class='hs-comment'>--   * parameters of type class assertions are unrestricted</span>
<a name="line-18"></a><span class='hs-comment'>-- </span>
<a name="line-19"></a><span class='hs-comment'>-- This module has been changed so that show is a real show.</span>
<a name="line-20"></a><span class='hs-comment'>-- For GHC, we also derive Typeable and Data for all types.</span>
<a name="line-21"></a>
<a name="line-22"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-23"></a>
<a name="line-24"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Language</span><span class='hs-varop'>.</span><span class='hs-conid'>Haskell</span><span class='hs-varop'>.</span><span class='hs-conid'>Syntax</span> <span class='hs-layout'>(</span>
<a name="line-25"></a>    <span class='hs-comment'>-- * Modules</span>
<a name="line-26"></a>    <span class='hs-conid'>HsModule</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsExportSpec</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-27"></a>    <span class='hs-conid'>HsImportDecl</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsImportSpec</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsAssoc</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-28"></a>    <span class='hs-comment'>-- * Declarations</span>
<a name="line-29"></a>    <span class='hs-conid'>HsDecl</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsConDecl</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsBangType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-30"></a>    <span class='hs-conid'>HsMatch</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsRhs</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsGuardedRhs</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-31"></a>    <span class='hs-conid'>HsSafety</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-32"></a>    <span class='hs-comment'>-- * Class Assertions and Contexts</span>
<a name="line-33"></a>    <span class='hs-conid'>HsQualType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsContext</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsAsst</span><span class='hs-layout'>,</span>
<a name="line-34"></a>    <span class='hs-comment'>-- * Types</span>
<a name="line-35"></a>    <span class='hs-conid'>HsType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-36"></a>    <span class='hs-comment'>-- * Expressions</span>
<a name="line-37"></a>    <span class='hs-conid'>HsExp</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsStmt</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsFieldUpdate</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-38"></a>    <span class='hs-conid'>HsAlt</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsGuardedAlts</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsGuardedAlt</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-39"></a>    <span class='hs-comment'>-- * Patterns</span>
<a name="line-40"></a>    <span class='hs-conid'>HsPat</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsPatField</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-41"></a>    <span class='hs-comment'>-- * Literals</span>
<a name="line-42"></a>    <span class='hs-conid'>HsLiteral</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-43"></a>    <span class='hs-comment'>-- * Variables, Constructors and Operators</span>
<a name="line-44"></a>    <span class='hs-conid'>Module</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsQName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsQOp</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsOp</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-45"></a>    <span class='hs-conid'>HsSpecialCon</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>HsCName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-46"></a>
<a name="line-47"></a>    <span class='hs-comment'>-- * Builtin names</span>
<a name="line-48"></a>
<a name="line-49"></a>    <span class='hs-comment'>-- ** Modules</span>
<a name="line-50"></a>    <span class='hs-varid'>prelude_mod</span><span class='hs-layout'>,</span> <span class='hs-varid'>main_mod</span><span class='hs-layout'>,</span>
<a name="line-51"></a>    <span class='hs-comment'>-- ** Main function of a program</span>
<a name="line-52"></a>    <span class='hs-varid'>main_name</span><span class='hs-layout'>,</span>
<a name="line-53"></a>    <span class='hs-comment'>-- ** Constructors</span>
<a name="line-54"></a>    <span class='hs-varid'>unit_con_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>tuple_con_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>list_cons_name</span><span class='hs-layout'>,</span>
<a name="line-55"></a>    <span class='hs-varid'>unit_con</span><span class='hs-layout'>,</span> <span class='hs-varid'>tuple_con</span><span class='hs-layout'>,</span>
<a name="line-56"></a>    <span class='hs-comment'>-- ** Type constructors</span>
<a name="line-57"></a>    <span class='hs-varid'>unit_tycon_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>fun_tycon_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>list_tycon_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>tuple_tycon_name</span><span class='hs-layout'>,</span>
<a name="line-58"></a>    <span class='hs-varid'>unit_tycon</span><span class='hs-layout'>,</span> <span class='hs-varid'>fun_tycon</span><span class='hs-layout'>,</span> <span class='hs-varid'>list_tycon</span><span class='hs-layout'>,</span> <span class='hs-varid'>tuple_tycon</span><span class='hs-layout'>,</span>
<a name="line-59"></a>
<a name="line-60"></a>    <span class='hs-comment'>-- * Source coordinates</span>
<a name="line-61"></a>    <span class='hs-conid'>SrcLoc</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-62"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-63"></a>
<a name="line-64"></a>
<a name="line-65"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-66"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Generics</span><span class='hs-varop'>.</span><span class='hs-conid'>Basics</span>
<a name="line-67"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Generics</span><span class='hs-varop'>.</span><span class='hs-conid'>Instances</span><span class='hs-conid'>()</span>
<a name="line-68"></a><span class='hs-cpp'>#endif</span>
<a name="line-69"></a>
<a name="line-70"></a><a name="SrcLoc"></a><span class='hs-comment'>-- | A position in the source.</span>
<a name="line-71"></a><a name="SrcLoc"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-layout'>{</span>
<a name="line-72"></a>		<span class='hs-varid'>srcFilename</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>,</span>
<a name="line-73"></a>		<span class='hs-varid'>srcLine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-layout'>,</span>
<a name="line-74"></a>		<span class='hs-varid'>srcColumn</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span>
<a name="line-75"></a>		<span class='hs-layout'>}</span>
<a name="line-76"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-77"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-78"></a><span class='hs-cpp'>#else</span>
<a name="line-79"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-80"></a><span class='hs-cpp'>#endif</span>
<a name="line-81"></a>
<a name="line-82"></a><a name="Module"></a><span class='hs-comment'>-- | The name of a Haskell module.</span>
<a name="line-83"></a><a name="Module"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Module</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Module</span> <span class='hs-conid'>String</span>
<a name="line-84"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-85"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-86"></a><span class='hs-cpp'>#else</span>
<a name="line-87"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-88"></a><span class='hs-cpp'>#endif</span>
<a name="line-89"></a>
<a name="line-90"></a><span class='hs-comment'>-- | Constructors with special syntax.</span>
<a name="line-91"></a><span class='hs-comment'>-- These names are never qualified, and always refer to builtin type or</span>
<a name="line-92"></a><span class='hs-comment'>-- data constructors.</span>
<a name="line-93"></a>
<a name="line-94"></a><a name="HsSpecialCon"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsSpecialCon</span>
<a name="line-95"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsUnitCon</span>		<span class='hs-comment'>-- ^ unit type and data constructor @()@</span>
<a name="line-96"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsListCon</span>		<span class='hs-comment'>-- ^ list type constructor @[]@</span>
<a name="line-97"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsFunCon</span>		<span class='hs-comment'>-- ^ function type constructor @-&gt;@</span>
<a name="line-98"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTupleCon</span> <span class='hs-conid'>Int</span>	<span class='hs-comment'>-- ^ /n/-ary tuple type and data</span>
<a name="line-99"></a>				<span class='hs-comment'>--   constructors @(,)@ etc</span>
<a name="line-100"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsCons</span>		<span class='hs-comment'>-- ^ list data constructor @(:)@</span>
<a name="line-101"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-102"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-103"></a><span class='hs-cpp'>#else</span>
<a name="line-104"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-105"></a><span class='hs-cpp'>#endif</span>
<a name="line-106"></a>
<a name="line-107"></a><a name="HsQName"></a><span class='hs-comment'>-- | This type is used to represent qualified variables, and also</span>
<a name="line-108"></a><a name="HsQName"></a><span class='hs-comment'>-- qualified constructors.</span>
<a name="line-109"></a><a name="HsQName"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsQName</span>
<a name="line-110"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>Qual</span> <span class='hs-conid'>Module</span> <span class='hs-conid'>HsName</span>	<span class='hs-comment'>-- ^ name qualified with a module name</span>
<a name="line-111"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>UnQual</span> <span class='hs-conid'>HsName</span>		<span class='hs-comment'>-- ^ unqualified name</span>
<a name="line-112"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>Special</span> <span class='hs-conid'>HsSpecialCon</span>	<span class='hs-comment'>-- ^ built-in constructor with special syntax</span>
<a name="line-113"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-114"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-115"></a><span class='hs-cpp'>#else</span>
<a name="line-116"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-117"></a><span class='hs-cpp'>#endif</span>
<a name="line-118"></a>
<a name="line-119"></a><a name="HsName"></a><span class='hs-comment'>-- | This type is used to represent variables, and also constructors.</span>
<a name="line-120"></a><a name="HsName"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsName</span>
<a name="line-121"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsIdent</span> <span class='hs-conid'>String</span>	<span class='hs-comment'>-- ^ /varid/ or /conid/</span>
<a name="line-122"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsSymbol</span> <span class='hs-conid'>String</span>	<span class='hs-comment'>-- ^ /varsym/ or /consym/</span>
<a name="line-123"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-124"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-125"></a><span class='hs-cpp'>#else</span>
<a name="line-126"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-127"></a><span class='hs-cpp'>#endif</span>
<a name="line-128"></a>
<a name="line-129"></a><a name="HsQOp"></a><span class='hs-comment'>-- | Possibly qualified infix operators (/qop/), appearing in expressions.</span>
<a name="line-130"></a><a name="HsQOp"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsQOp</span>
<a name="line-131"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsQVarOp</span> <span class='hs-conid'>HsQName</span>	<span class='hs-comment'>-- ^ variable operator (/qvarop/)</span>
<a name="line-132"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsQConOp</span> <span class='hs-conid'>HsQName</span>	<span class='hs-comment'>-- ^ constructor operator (/qconop/)</span>
<a name="line-133"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-134"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-135"></a><span class='hs-cpp'>#else</span>
<a name="line-136"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-137"></a><span class='hs-cpp'>#endif</span>
<a name="line-138"></a>
<a name="line-139"></a><a name="HsOp"></a><span class='hs-comment'>-- | Operators, appearing in @infix@ declarations.</span>
<a name="line-140"></a><a name="HsOp"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsOp</span>
<a name="line-141"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsVarOp</span> <span class='hs-conid'>HsName</span>	<span class='hs-comment'>-- ^ variable operator (/varop/)</span>
<a name="line-142"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsConOp</span> <span class='hs-conid'>HsName</span>	<span class='hs-comment'>-- ^ constructor operator (/conop/)</span>
<a name="line-143"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-144"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-145"></a><span class='hs-cpp'>#else</span>
<a name="line-146"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-147"></a><span class='hs-cpp'>#endif</span>
<a name="line-148"></a>
<a name="line-149"></a><a name="HsCName"></a><span class='hs-comment'>-- | A name (/cname/) of a component of a class or data type in an @import@</span>
<a name="line-150"></a><a name="HsCName"></a><span class='hs-comment'>-- or export specification.</span>
<a name="line-151"></a><a name="HsCName"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsCName</span>
<a name="line-152"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsVarName</span> <span class='hs-conid'>HsName</span>	<span class='hs-comment'>-- ^ name of a method or field</span>
<a name="line-153"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsConName</span> <span class='hs-conid'>HsName</span>	<span class='hs-comment'>-- ^ name of a data constructor</span>
<a name="line-154"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-155"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-156"></a><span class='hs-cpp'>#else</span>
<a name="line-157"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-158"></a><span class='hs-cpp'>#endif</span>
<a name="line-159"></a>
<a name="line-160"></a><a name="HsModule"></a><span class='hs-comment'>-- | A Haskell source module.</span>
<a name="line-161"></a><a name="HsModule"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsModule</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsModule</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>Module</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsExportSpec</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-162"></a>                         <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsImportDecl</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-163"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-164"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-165"></a><span class='hs-cpp'>#else</span>
<a name="line-166"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-167"></a><span class='hs-cpp'>#endif</span>
<a name="line-168"></a>
<a name="line-169"></a><a name="HsExportSpec"></a><span class='hs-comment'>-- | Export specification.</span>
<a name="line-170"></a><a name="HsExportSpec"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsExportSpec</span>
<a name="line-171"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsEVar</span> <span class='hs-conid'>HsQName</span>			<span class='hs-comment'>-- ^ variable</span>
<a name="line-172"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEAbs</span> <span class='hs-conid'>HsQName</span>			<span class='hs-comment'>-- ^ @T@:</span>
<a name="line-173"></a>			<span class='hs-comment'>-- a class or datatype exported abstractly,</span>
<a name="line-174"></a>			<span class='hs-comment'>-- or a type synonym.</span>
<a name="line-175"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEThingAll</span> <span class='hs-conid'>HsQName</span>			<span class='hs-comment'>-- ^ @T(..)@:</span>
<a name="line-176"></a>			<span class='hs-comment'>-- a class exported with all of its methods, or</span>
<a name="line-177"></a>			<span class='hs-comment'>-- a datatype exported with all of its constructors.</span>
<a name="line-178"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEThingWith</span> <span class='hs-conid'>HsQName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsCName</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ @T(C_1,...,C_n)@:</span>
<a name="line-179"></a>			<span class='hs-comment'>-- a class exported with some of its methods, or</span>
<a name="line-180"></a>			<span class='hs-comment'>-- a datatype exported with some of its constructors.</span>
<a name="line-181"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEModuleContents</span> <span class='hs-conid'>Module</span>		<span class='hs-comment'>-- ^ @module M@:</span>
<a name="line-182"></a>			<span class='hs-comment'>-- re-export a module.</span>
<a name="line-183"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-184"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-185"></a><span class='hs-cpp'>#else</span>
<a name="line-186"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-187"></a><span class='hs-cpp'>#endif</span>
<a name="line-188"></a>
<a name="line-189"></a><a name="HsImportDecl"></a><span class='hs-comment'>-- | Import declaration.</span>
<a name="line-190"></a><a name="HsImportDecl"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsImportDecl</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsImportDecl</span>
<a name="line-191"></a>	<span class='hs-layout'>{</span> <span class='hs-varid'>importLoc</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SrcLoc</span>		<span class='hs-comment'>-- ^ position of the @import@ keyword.</span>
<a name="line-192"></a>	<span class='hs-layout'>,</span> <span class='hs-varid'>importModule</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Module</span>	<span class='hs-comment'>-- ^ name of the module imported.</span>
<a name="line-193"></a>	<span class='hs-layout'>,</span> <span class='hs-varid'>importQualified</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span>	<span class='hs-comment'>-- ^ imported @qualified@?</span>
<a name="line-194"></a>	<span class='hs-layout'>,</span> <span class='hs-varid'>importAs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Module</span>	<span class='hs-comment'>-- ^ optional alias name in an</span>
<a name="line-195"></a>					<span class='hs-comment'>-- @as@ clause.</span>
<a name="line-196"></a>	<span class='hs-layout'>,</span> <span class='hs-varid'>importSpecs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Bool</span><span class='hs-layout'>,</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>HsImportSpec</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-197"></a>			<span class='hs-comment'>-- ^ optional list of import specifications.</span>
<a name="line-198"></a>			<span class='hs-comment'>-- The 'Bool' is 'True' if the names are excluded</span>
<a name="line-199"></a>			<span class='hs-comment'>-- by @hiding@.</span>
<a name="line-200"></a>	<span class='hs-layout'>}</span>
<a name="line-201"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-202"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-203"></a><span class='hs-cpp'>#else</span>
<a name="line-204"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-205"></a><span class='hs-cpp'>#endif</span>
<a name="line-206"></a>
<a name="line-207"></a><a name="HsImportSpec"></a><span class='hs-comment'>-- | Import specification.</span>
<a name="line-208"></a><a name="HsImportSpec"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsImportSpec</span>
<a name="line-209"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsIVar</span> <span class='hs-conid'>HsName</span>			<span class='hs-comment'>-- ^ variable</span>
<a name="line-210"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIAbs</span> <span class='hs-conid'>HsName</span>			<span class='hs-comment'>-- ^ @T@:</span>
<a name="line-211"></a>			<span class='hs-comment'>-- the name of a class, datatype or type synonym.</span>
<a name="line-212"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIThingAll</span> <span class='hs-conid'>HsName</span>			<span class='hs-comment'>-- ^ @T(..)@:</span>
<a name="line-213"></a>			<span class='hs-comment'>-- a class imported with all of its methods, or</span>
<a name="line-214"></a>			<span class='hs-comment'>-- a datatype imported with all of its constructors.</span>
<a name="line-215"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIThingWith</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsCName</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ @T(C_1,...,C_n)@:</span>
<a name="line-216"></a>			<span class='hs-comment'>-- a class imported with some of its methods, or</span>
<a name="line-217"></a>			<span class='hs-comment'>-- a datatype imported with some of its constructors.</span>
<a name="line-218"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-219"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-220"></a><span class='hs-cpp'>#else</span>
<a name="line-221"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-222"></a><span class='hs-cpp'>#endif</span>
<a name="line-223"></a>
<a name="line-224"></a><a name="HsAssoc"></a><span class='hs-comment'>-- | Associativity of an operator.</span>
<a name="line-225"></a><a name="HsAssoc"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsAssoc</span>
<a name="line-226"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsAssocNone</span>	<span class='hs-comment'>-- ^ non-associative operator (declared with @infix@)</span>
<a name="line-227"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsAssocLeft</span>	<span class='hs-comment'>-- ^ left-associative operator (declared with @infixl@).</span>
<a name="line-228"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsAssocRight</span>	<span class='hs-comment'>-- ^ right-associative operator (declared with @infixr@)</span>
<a name="line-229"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-230"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-231"></a><span class='hs-cpp'>#else</span>
<a name="line-232"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-233"></a><span class='hs-cpp'>#endif</span>
<a name="line-234"></a>
<a name="line-235"></a><a name="HsDecl"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsDecl</span>
<a name="line-236"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTypeDecl</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsType</span>
<a name="line-237"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsDataDecl</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsContext</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsConDecl</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsQName</span><span class='hs-keyglyph'>]</span>
<a name="line-238"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsInfixDecl</span>   <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsAssoc</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsOp</span><span class='hs-keyglyph'>]</span>
<a name="line-239"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsNewTypeDecl</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsContext</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsConDecl</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsQName</span><span class='hs-keyglyph'>]</span>
<a name="line-240"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsClassDecl</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsContext</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-241"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsInstDecl</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsContext</span> <span class='hs-conid'>HsQName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsType</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-242"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsDefaultDecl</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsType</span><span class='hs-keyglyph'>]</span>
<a name="line-243"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTypeSig</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsQualType</span>
<a name="line-244"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsFunBind</span>     <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsMatch</span><span class='hs-keyglyph'>]</span>
<a name="line-245"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPatBind</span>	 <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsPat</span> <span class='hs-conid'>HsRhs</span> <span class='hs-comment'>{-where-}</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-246"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsForeignImport</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>String</span> <span class='hs-conid'>HsSafety</span> <span class='hs-conid'>String</span> <span class='hs-conid'>HsName</span> <span class='hs-conid'>HsType</span>
<a name="line-247"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsForeignExport</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span> <span class='hs-conid'>HsName</span> <span class='hs-conid'>HsType</span>
<a name="line-248"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-249"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-250"></a><span class='hs-cpp'>#else</span>
<a name="line-251"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-252"></a><span class='hs-cpp'>#endif</span>
<a name="line-253"></a>
<a name="line-254"></a><a name="HsMatch"></a><span class='hs-comment'>-- | Clauses of a function binding.</span>
<a name="line-255"></a><a name="HsMatch"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsMatch</span>
<a name="line-256"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsMatch</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPat</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsRhs</span> <span class='hs-comment'>{-where-}</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-257"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-258"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-259"></a><span class='hs-cpp'>#else</span>
<a name="line-260"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-261"></a><span class='hs-cpp'>#endif</span>
<a name="line-262"></a>
<a name="line-263"></a><a name="HsConDecl"></a><span class='hs-comment'>-- | Declaration of a data constructor.</span>
<a name="line-264"></a><a name="HsConDecl"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsConDecl</span>
<a name="line-265"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsConDecl</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsBangType</span><span class='hs-keyglyph'>]</span>
<a name="line-266"></a>				<span class='hs-comment'>-- ^ ordinary data constructor</span>
<a name="line-267"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsRecDecl</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsName</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>HsName</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span><span class='hs-conid'>HsBangType</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-268"></a>				<span class='hs-comment'>-- ^ record constructor</span>
<a name="line-269"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-270"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-271"></a><span class='hs-cpp'>#else</span>
<a name="line-272"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-273"></a><span class='hs-cpp'>#endif</span>
<a name="line-274"></a>
<a name="line-275"></a><a name="HsBangType"></a><span class='hs-comment'>-- | The type of a constructor argument or field, optionally including</span>
<a name="line-276"></a><a name="HsBangType"></a><span class='hs-comment'>-- a strictness annotation.</span>
<a name="line-277"></a><a name="HsBangType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsBangType</span>
<a name="line-278"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsBangedTy</span>   <span class='hs-conid'>HsType</span>	<span class='hs-comment'>-- ^ strict component, marked with \"@!@\"</span>
<a name="line-279"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsUnBangedTy</span> <span class='hs-conid'>HsType</span>	<span class='hs-comment'>-- ^ non-strict component</span>
<a name="line-280"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-281"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-282"></a><span class='hs-cpp'>#else</span>
<a name="line-283"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-284"></a><span class='hs-cpp'>#endif</span>
<a name="line-285"></a>
<a name="line-286"></a><a name="HsRhs"></a><span class='hs-comment'>-- | The right hand side of a function or pattern binding.</span>
<a name="line-287"></a><a name="HsRhs"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsRhs</span>
<a name="line-288"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsUnGuardedRhs</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ unguarded right hand side (/exp/)</span>
<a name="line-289"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsGuardedRhss</span>  <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsGuardedRhs</span><span class='hs-keyglyph'>]</span>
<a name="line-290"></a>				<span class='hs-comment'>-- ^ guarded right hand side (/gdrhs/)</span>
<a name="line-291"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-292"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-293"></a><span class='hs-cpp'>#else</span>
<a name="line-294"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-295"></a><span class='hs-cpp'>#endif</span>
<a name="line-296"></a>
<a name="line-297"></a><a name="HsGuardedRhs"></a><span class='hs-comment'>-- | A guarded right hand side @|@ /exp/ @=@ /exp/.</span>
<a name="line-298"></a><a name="HsGuardedRhs"></a><span class='hs-comment'>-- The first expression will be Boolean-valued.</span>
<a name="line-299"></a><a name="HsGuardedRhs"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsGuardedRhs</span>
<a name="line-300"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsGuardedRhs</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>
<a name="line-301"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-302"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-303"></a><span class='hs-cpp'>#else</span>
<a name="line-304"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-305"></a><span class='hs-cpp'>#endif</span>
<a name="line-306"></a>
<a name="line-307"></a><a name="HsSafety"></a><span class='hs-comment'>-- | Safety level for invoking a foreign entity</span>
<a name="line-308"></a><a name="HsSafety"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsSafety</span>
<a name="line-309"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsSafe</span>	<span class='hs-comment'>-- ^ call may generate callbacks</span>
<a name="line-310"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsUnsafe</span>	<span class='hs-comment'>-- ^ call will not generate callbacks</span>
<a name="line-311"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-312"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-313"></a><span class='hs-cpp'>#else</span>
<a name="line-314"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Ord</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-315"></a><span class='hs-cpp'>#endif</span>
<a name="line-316"></a>
<a name="line-317"></a><a name="HsQualType"></a><span class='hs-comment'>-- | A type qualified with a context.</span>
<a name="line-318"></a><a name="HsQualType"></a><span class='hs-comment'>--   An unqualified type has an empty context.</span>
<a name="line-319"></a><a name="HsQualType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsQualType</span>
<a name="line-320"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsQualType</span> <span class='hs-conid'>HsContext</span> <span class='hs-conid'>HsType</span>
<a name="line-321"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-322"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-323"></a><span class='hs-cpp'>#else</span>
<a name="line-324"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-325"></a><span class='hs-cpp'>#endif</span>
<a name="line-326"></a>
<a name="line-327"></a><a name="HsType"></a><span class='hs-comment'>-- | Haskell types and type constructors.</span>
<a name="line-328"></a><a name="HsType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsType</span>
<a name="line-329"></a>	 <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTyFun</span>   <span class='hs-conid'>HsType</span> <span class='hs-conid'>HsType</span>	<span class='hs-comment'>-- ^ function type</span>
<a name="line-330"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTyTuple</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsType</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ tuple type</span>
<a name="line-331"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTyApp</span>   <span class='hs-conid'>HsType</span> <span class='hs-conid'>HsType</span>	<span class='hs-comment'>-- ^ application of a type constructor</span>
<a name="line-332"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTyVar</span>   <span class='hs-conid'>HsName</span>		<span class='hs-comment'>-- ^ type variable</span>
<a name="line-333"></a>	 <span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTyCon</span>   <span class='hs-conid'>HsQName</span>		<span class='hs-comment'>-- ^ named type or type constructor</span>
<a name="line-334"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-335"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-336"></a><span class='hs-cpp'>#else</span>
<a name="line-337"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-338"></a><span class='hs-cpp'>#endif</span>
<a name="line-339"></a>
<a name="line-340"></a><a name="HsContext"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>HsContext</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsAsst</span><span class='hs-keyglyph'>]</span>
<a name="line-341"></a>
<a name="line-342"></a><a name="HsAsst"></a><span class='hs-comment'>-- | Class assertions.</span>
<a name="line-343"></a><a name="HsAsst"></a><span class='hs-comment'>--   In Haskell 98, the argument would be a /tyvar/, but this definition</span>
<a name="line-344"></a><a name="HsAsst"></a><span class='hs-comment'>--   allows multiple parameters, and allows them to be /type/s.</span>
<a name="line-345"></a><a name="HsAsst"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>HsAsst</span>    <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>HsQName</span><span class='hs-layout'>,</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>HsType</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-346"></a>
<a name="line-347"></a><a name="HsLiteral"></a><span class='hs-comment'>-- | /literal/.</span>
<a name="line-348"></a><a name="HsLiteral"></a><span class='hs-comment'>-- Values of this type hold the abstract value of the literal, not the</span>
<a name="line-349"></a><a name="HsLiteral"></a><span class='hs-comment'>-- precise string representation used.  For example, @10@, @0o12@ and @0xa@</span>
<a name="line-350"></a><a name="HsLiteral"></a><span class='hs-comment'>-- have the same representation.</span>
<a name="line-351"></a><a name="HsLiteral"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsLiteral</span>
<a name="line-352"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsChar</span>	<span class='hs-conid'>Char</span>		<span class='hs-comment'>-- ^ character literal</span>
<a name="line-353"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsString</span>	<span class='hs-conid'>String</span>		<span class='hs-comment'>-- ^ string literal</span>
<a name="line-354"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsInt</span>		<span class='hs-conid'>Integer</span>		<span class='hs-comment'>-- ^ integer literal</span>
<a name="line-355"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsFrac</span>	<span class='hs-conid'>Rational</span>	<span class='hs-comment'>-- ^ floating point literal</span>
<a name="line-356"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsCharPrim</span>	<span class='hs-conid'>Char</span>		<span class='hs-comment'>-- ^ GHC unboxed character literal</span>
<a name="line-357"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsStringPrim</span>	<span class='hs-conid'>String</span>		<span class='hs-comment'>-- ^ GHC unboxed string literal</span>
<a name="line-358"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIntPrim</span>	<span class='hs-conid'>Integer</span>		<span class='hs-comment'>-- ^ GHC unboxed integer literal</span>
<a name="line-359"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsFloatPrim</span>	<span class='hs-conid'>Rational</span>	<span class='hs-comment'>-- ^ GHC unboxed float literal</span>
<a name="line-360"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsDoublePrim</span>	<span class='hs-conid'>Rational</span>	<span class='hs-comment'>-- ^ GHC unboxed double literal</span>
<a name="line-361"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-362"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-363"></a><span class='hs-cpp'>#else</span>
<a name="line-364"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-365"></a><span class='hs-cpp'>#endif</span>
<a name="line-366"></a>
<a name="line-367"></a><span class='hs-comment'>-- | Haskell expressions.</span>
<a name="line-368"></a><span class='hs-comment'>--</span>
<a name="line-369"></a><span class='hs-comment'>-- /Notes:/</span>
<a name="line-370"></a><span class='hs-comment'>--</span>
<a name="line-371"></a><span class='hs-comment'>-- * Because it is difficult for parsers to distinguish patterns from</span>
<a name="line-372"></a><span class='hs-comment'>--   expressions, they typically parse them in the same way and then check</span>
<a name="line-373"></a><span class='hs-comment'>--   that they have the appropriate form.  Hence the expression type</span>
<a name="line-374"></a><span class='hs-comment'>--   includes some forms that are found only in patterns.  After these</span>
<a name="line-375"></a><span class='hs-comment'>--   checks, these constructors should not be used.</span>
<a name="line-376"></a><span class='hs-comment'>--</span>
<a name="line-377"></a><span class='hs-comment'>-- * The parser does not take precedence and associativity into account,</span>
<a name="line-378"></a><span class='hs-comment'>--   so it will leave 'HsInfixApp's associated to the left.</span>
<a name="line-379"></a><span class='hs-comment'>--</span>
<a name="line-380"></a><span class='hs-comment'>-- * The 'Language.Haskell.Pretty.Pretty' instance for 'HsExp' does not</span>
<a name="line-381"></a><span class='hs-comment'>--   add parentheses in printing.</span>
<a name="line-382"></a>
<a name="line-383"></a><a name="HsExp"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsExp</span>
<a name="line-384"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsVar</span> <span class='hs-conid'>HsQName</span>			<span class='hs-comment'>-- ^ variable</span>
<a name="line-385"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsCon</span> <span class='hs-conid'>HsQName</span>			<span class='hs-comment'>-- ^ data constructor</span>
<a name="line-386"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsLit</span> <span class='hs-conid'>HsLiteral</span>		<span class='hs-comment'>-- ^ literal constant</span>
<a name="line-387"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsInfixApp</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsQOp</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ infix application</span>
<a name="line-388"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsApp</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ ordinary application</span>
<a name="line-389"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsNegApp</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ negation expression @-@ /exp/</span>
<a name="line-390"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsLambda</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPat</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsExp</span> <span class='hs-comment'>-- ^ lambda expression</span>
<a name="line-391"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsLet</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ local declarations with @let@</span>
<a name="line-392"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIf</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/</span>
<a name="line-393"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsCase</span> <span class='hs-conid'>HsExp</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsAlt</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ @case@ /exp/ @of@ /alts/</span>
<a name="line-394"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsDo</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsStmt</span><span class='hs-keyglyph'>]</span>			<span class='hs-comment'>-- ^ @do@-expression:</span>
<a name="line-395"></a>					<span class='hs-comment'>-- the last statement in the list</span>
<a name="line-396"></a>					<span class='hs-comment'>-- should be an expression.</span>
<a name="line-397"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsTuple</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsExp</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ tuple expression</span>
<a name="line-398"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsList</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsExp</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ list expression</span>
<a name="line-399"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsParen</span> <span class='hs-conid'>HsExp</span>			<span class='hs-comment'>-- ^ parenthesized expression</span>
<a name="line-400"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsLeftSection</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsQOp</span>	<span class='hs-comment'>-- ^ left section @(@/exp/ /qop/@)@</span>
<a name="line-401"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsRightSection</span> <span class='hs-conid'>HsQOp</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ right section @(@/qop/ /exp/@)@</span>
<a name="line-402"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsRecConstr</span> <span class='hs-conid'>HsQName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsFieldUpdate</span><span class='hs-keyglyph'>]</span>
<a name="line-403"></a>					<span class='hs-comment'>-- ^ record construction expression</span>
<a name="line-404"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsRecUpdate</span> <span class='hs-conid'>HsExp</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsFieldUpdate</span><span class='hs-keyglyph'>]</span>
<a name="line-405"></a>					<span class='hs-comment'>-- ^ record update expression</span>
<a name="line-406"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEnumFrom</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ unbounded arithmetic sequence,</span>
<a name="line-407"></a>					<span class='hs-comment'>-- incrementing by 1</span>
<a name="line-408"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEnumFromTo</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ bounded arithmetic sequence,</span>
<a name="line-409"></a>					<span class='hs-comment'>-- incrementing by 1</span>
<a name="line-410"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEnumFromThen</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ unbounded arithmetic sequence,</span>
<a name="line-411"></a>					<span class='hs-comment'>-- with first two elements given</span>
<a name="line-412"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsEnumFromThenTo</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>
<a name="line-413"></a>					<span class='hs-comment'>-- ^ bounded arithmetic sequence,</span>
<a name="line-414"></a>					<span class='hs-comment'>-- with first two elements given</span>
<a name="line-415"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsListComp</span> <span class='hs-conid'>HsExp</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsStmt</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ list comprehension</span>
<a name="line-416"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsExpTypeSig</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsQualType</span>
<a name="line-417"></a>					<span class='hs-comment'>-- ^ expression type signature</span>
<a name="line-418"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsAsPat</span> <span class='hs-conid'>HsName</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ patterns only</span>
<a name="line-419"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsWildCard</span>			<span class='hs-comment'>-- ^ patterns only</span>
<a name="line-420"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsIrrPat</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ patterns only</span>
<a name="line-421"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-422"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-423"></a><span class='hs-cpp'>#else</span>
<a name="line-424"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-425"></a><span class='hs-cpp'>#endif</span>
<a name="line-426"></a>
<a name="line-427"></a><a name="HsPat"></a><span class='hs-comment'>-- | A pattern, to be matched against a value.</span>
<a name="line-428"></a><a name="HsPat"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsPat</span>
<a name="line-429"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsPVar</span> <span class='hs-conid'>HsName</span>			<span class='hs-comment'>-- ^ variable</span>
<a name="line-430"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPLit</span> <span class='hs-conid'>HsLiteral</span>		<span class='hs-comment'>-- ^ literal constant</span>
<a name="line-431"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPNeg</span> <span class='hs-conid'>HsPat</span>			<span class='hs-comment'>-- ^ negated pattern</span>
<a name="line-432"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPInfixApp</span> <span class='hs-conid'>HsPat</span> <span class='hs-conid'>HsQName</span> <span class='hs-conid'>HsPat</span>
<a name="line-433"></a>					<span class='hs-comment'>-- ^ pattern with infix data constructor</span>
<a name="line-434"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPApp</span> <span class='hs-conid'>HsQName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPat</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ data constructor and argument</span>
<a name="line-435"></a>					<span class='hs-comment'>-- patterns</span>
<a name="line-436"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPTuple</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPat</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ tuple pattern</span>
<a name="line-437"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPList</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPat</span><span class='hs-keyglyph'>]</span>		<span class='hs-comment'>-- ^ list pattern</span>
<a name="line-438"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPParen</span> <span class='hs-conid'>HsPat</span>		<span class='hs-comment'>-- ^ parenthesized pattern</span>
<a name="line-439"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPRec</span> <span class='hs-conid'>HsQName</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsPatField</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ labelled pattern</span>
<a name="line-440"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPAsPat</span> <span class='hs-conid'>HsName</span> <span class='hs-conid'>HsPat</span>		<span class='hs-comment'>-- ^ @\@@-pattern</span>
<a name="line-441"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPWildCard</span>			<span class='hs-comment'>-- ^ wildcard pattern (@_@)</span>
<a name="line-442"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsPIrrPat</span> <span class='hs-conid'>HsPat</span>		<span class='hs-comment'>-- ^ irrefutable pattern (@~@)</span>
<a name="line-443"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-444"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-445"></a><span class='hs-cpp'>#else</span>
<a name="line-446"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-447"></a><span class='hs-cpp'>#endif</span>
<a name="line-448"></a>
<a name="line-449"></a><a name="HsPatField"></a><span class='hs-comment'>-- | An /fpat/ in a labeled record pattern.</span>
<a name="line-450"></a><a name="HsPatField"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsPatField</span>
<a name="line-451"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsPFieldPat</span> <span class='hs-conid'>HsQName</span> <span class='hs-conid'>HsPat</span>
<a name="line-452"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-453"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-454"></a><span class='hs-cpp'>#else</span>
<a name="line-455"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-456"></a><span class='hs-cpp'>#endif</span>
<a name="line-457"></a>
<a name="line-458"></a><a name="HsStmt"></a><span class='hs-comment'>-- | This type represents both /stmt/ in a @do@-expression,</span>
<a name="line-459"></a><a name="HsStmt"></a><span class='hs-comment'>--   and /qual/ in a list comprehension.</span>
<a name="line-460"></a><a name="HsStmt"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsStmt</span>
<a name="line-461"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsGenerator</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsPat</span> <span class='hs-conid'>HsExp</span>
<a name="line-462"></a>				<span class='hs-comment'>-- ^ a generator /pat/ @&lt;-@ /exp/</span>
<a name="line-463"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsQualifier</span> <span class='hs-conid'>HsExp</span>	<span class='hs-comment'>-- ^ an /exp/ by itself: in a @do@-expression,</span>
<a name="line-464"></a>				<span class='hs-comment'>-- an action whose result is discarded;</span>
<a name="line-465"></a>				<span class='hs-comment'>-- in a list comprehension, a guard expression</span>
<a name="line-466"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsLetStmt</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ local bindings</span>
<a name="line-467"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-468"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-469"></a><span class='hs-cpp'>#else</span>
<a name="line-470"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-471"></a><span class='hs-cpp'>#endif</span>
<a name="line-472"></a>
<a name="line-473"></a><a name="HsFieldUpdate"></a><span class='hs-comment'>-- | An /fbind/ in a labeled record construction or update expression.</span>
<a name="line-474"></a><a name="HsFieldUpdate"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsFieldUpdate</span>
<a name="line-475"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsFieldUpdate</span> <span class='hs-conid'>HsQName</span> <span class='hs-conid'>HsExp</span>
<a name="line-476"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-477"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-478"></a><span class='hs-cpp'>#else</span>
<a name="line-479"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-480"></a><span class='hs-cpp'>#endif</span>
<a name="line-481"></a>
<a name="line-482"></a><a name="HsAlt"></a><span class='hs-comment'>-- | An /alt/ in a @case@ expression.</span>
<a name="line-483"></a><a name="HsAlt"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsAlt</span>
<a name="line-484"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsAlt</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsPat</span> <span class='hs-conid'>HsGuardedAlts</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsDecl</span><span class='hs-keyglyph'>]</span>
<a name="line-485"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-486"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-487"></a><span class='hs-cpp'>#else</span>
<a name="line-488"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-489"></a><span class='hs-cpp'>#endif</span>
<a name="line-490"></a>
<a name="line-491"></a><a name="HsGuardedAlts"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsGuardedAlts</span>
<a name="line-492"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsUnGuardedAlt</span> <span class='hs-conid'>HsExp</span>		<span class='hs-comment'>-- ^ @-&gt;@ /exp/</span>
<a name="line-493"></a>	<span class='hs-keyglyph'>|</span> <span class='hs-conid'>HsGuardedAlts</span>  <span class='hs-keyglyph'>[</span><span class='hs-conid'>HsGuardedAlt</span><span class='hs-keyglyph'>]</span>	<span class='hs-comment'>-- ^ /gdpat/</span>
<a name="line-494"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-495"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-496"></a><span class='hs-cpp'>#else</span>
<a name="line-497"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-498"></a><span class='hs-cpp'>#endif</span>
<a name="line-499"></a>
<a name="line-500"></a><a name="HsGuardedAlt"></a><span class='hs-comment'>-- | A guarded alternative @|@ /exp/ @-&gt;@ /exp/.</span>
<a name="line-501"></a><a name="HsGuardedAlt"></a><span class='hs-comment'>-- The first expression will be Boolean-valued.</span>
<a name="line-502"></a><a name="HsGuardedAlt"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HsGuardedAlt</span>
<a name="line-503"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsGuardedAlt</span> <span class='hs-conid'>SrcLoc</span> <span class='hs-conid'>HsExp</span> <span class='hs-conid'>HsExp</span>
<a name="line-504"></a><span class='hs-cpp'>#ifdef __GLASGOW_HASKELL__</span>
<a name="line-505"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span><span class='hs-conid'>Data</span><span class='hs-layout'>)</span>
<a name="line-506"></a><span class='hs-cpp'>#else</span>
<a name="line-507"></a>  <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-508"></a><span class='hs-cpp'>#endif</span>
<a name="line-509"></a>
<a name="line-510"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-511"></a><span class='hs-comment'>-- Builtin names.</span>
<a name="line-512"></a>
<a name="line-513"></a><a name="prelude_mod"></a><span class='hs-definition'>prelude_mod</span><span class='hs-layout'>,</span> <span class='hs-varid'>main_mod</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Module</span>
<a name="line-514"></a><span class='hs-definition'>prelude_mod</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Module</span> <span class='hs-str'>"Prelude"</span>
<a name="line-515"></a><a name="main_mod"></a><span class='hs-definition'>main_mod</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Module</span> <span class='hs-str'>"Main"</span>
<a name="line-516"></a>
<a name="line-517"></a><a name="main_name"></a><span class='hs-definition'>main_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsName</span>
<a name="line-518"></a><span class='hs-definition'>main_name</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsIdent</span> <span class='hs-str'>"main"</span>
<a name="line-519"></a>
<a name="line-520"></a><a name="unit_con_name"></a><span class='hs-definition'>unit_con_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsQName</span>
<a name="line-521"></a><span class='hs-definition'>unit_con_name</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Special</span> <span class='hs-conid'>HsUnitCon</span>
<a name="line-522"></a>
<a name="line-523"></a><a name="tuple_con_name"></a><span class='hs-definition'>tuple_con_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>HsQName</span>
<a name="line-524"></a><span class='hs-definition'>tuple_con_name</span> <span class='hs-varid'>i</span>      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Special</span> <span class='hs-layout'>(</span><span class='hs-conid'>HsTupleCon</span> <span class='hs-layout'>(</span><span class='hs-varid'>i</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-525"></a>
<a name="line-526"></a><a name="list_cons_name"></a><span class='hs-definition'>list_cons_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsQName</span>
<a name="line-527"></a><span class='hs-definition'>list_cons_name</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Special</span> <span class='hs-conid'>HsCons</span>
<a name="line-528"></a>
<a name="line-529"></a><a name="unit_con"></a><span class='hs-definition'>unit_con</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsExp</span>
<a name="line-530"></a><span class='hs-definition'>unit_con</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsCon</span> <span class='hs-varid'>unit_con_name</span>
<a name="line-531"></a>
<a name="line-532"></a><a name="tuple_con"></a><span class='hs-definition'>tuple_con</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>HsExp</span>
<a name="line-533"></a><span class='hs-definition'>tuple_con</span> <span class='hs-varid'>i</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsCon</span> <span class='hs-layout'>(</span><span class='hs-varid'>tuple_con_name</span> <span class='hs-varid'>i</span><span class='hs-layout'>)</span>
<a name="line-534"></a>
<a name="line-535"></a><a name="unit_tycon_name"></a><span class='hs-definition'>unit_tycon_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>fun_tycon_name</span><span class='hs-layout'>,</span> <span class='hs-varid'>list_tycon_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsQName</span>
<a name="line-536"></a><span class='hs-definition'>unit_tycon_name</span>       <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unit_con_name</span>
<a name="line-537"></a><a name="fun_tycon_name"></a><span class='hs-definition'>fun_tycon_name</span>        <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Special</span> <span class='hs-conid'>HsFunCon</span>
<a name="line-538"></a><a name="list_tycon_name"></a><span class='hs-definition'>list_tycon_name</span>       <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Special</span> <span class='hs-conid'>HsListCon</span>
<a name="line-539"></a>
<a name="line-540"></a><a name="tuple_tycon_name"></a><span class='hs-definition'>tuple_tycon_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>HsQName</span>
<a name="line-541"></a><span class='hs-definition'>tuple_tycon_name</span> <span class='hs-varid'>i</span>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tuple_con_name</span> <span class='hs-varid'>i</span>
<a name="line-542"></a>
<a name="line-543"></a><a name="unit_tycon"></a><span class='hs-definition'>unit_tycon</span><span class='hs-layout'>,</span> <span class='hs-varid'>fun_tycon</span><span class='hs-layout'>,</span> <span class='hs-varid'>list_tycon</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HsType</span>
<a name="line-544"></a><span class='hs-definition'>unit_tycon</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTyCon</span> <span class='hs-varid'>unit_tycon_name</span>
<a name="line-545"></a><a name="fun_tycon"></a><span class='hs-definition'>fun_tycon</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTyCon</span> <span class='hs-varid'>fun_tycon_name</span>
<a name="line-546"></a><a name="list_tycon"></a><span class='hs-definition'>list_tycon</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTyCon</span> <span class='hs-varid'>list_tycon_name</span>
<a name="line-547"></a>
<a name="line-548"></a><a name="tuple_tycon"></a><span class='hs-definition'>tuple_tycon</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>HsType</span>
<a name="line-549"></a><span class='hs-definition'>tuple_tycon</span> <span class='hs-varid'>i</span>	      <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HsTyCon</span> <span class='hs-layout'>(</span><span class='hs-varid'>tuple_tycon_name</span> <span class='hs-varid'>i</span><span class='hs-layout'>)</span>
</pre></body>
</html>