B      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@Aportable experimentallibraries@haskell.org Safe-Infered A guarded alternative | exp -> exp. . The first expression will be Boolean-valued. gdpat -> exp An alt in a case expression. An fbind8 in a labeled record construction or update expression. This type represents both stmt in a do -expression,  and qual in a list comprehension. local bindings an exp by itself: in a do -expression, & an action whose result is discarded; - in a list comprehension, a guard expression  a generator pat <- exp An fpat in a labeled record pattern. *A pattern, to be matched against a value. irrefutable pattern (~) wildcard pattern (_) @ -pattern labelled pattern parenthesized pattern  list pattern !tuple pattern "data constructor and argument  patterns #$pattern with infix data constructor $negated pattern %literal constant & variable 'Haskell expressions. Notes: B Because it is difficult for parsers to distinguish patterns from I expressions, they typically parse them in the same way and then check C that they have the appropriate form. Hence the expression type E includes some forms that are found only in patterns. After these 2 checks, these constructors should not be used. E The parser does not take precedence and associativity into account,  so it will leave ?s associated to the left.  The  instance for ' does not  add parentheses in printing. (patterns only )patterns only *patterns only +expression type signature ,list comprehension -bounded arithmetic sequence,  with first two elements given .unbounded arithmetic sequence,  with first two elements given /bounded arithmetic sequence,  incrementing by 1 0unbounded arithmetic sequence,  incrementing by 1 1record update expression 2record construction expression 3right section (qop exp) 4 left section (exp qop) 5parenthesized expression 6list expression 7tuple expression 8do -expression:  the last statement in the list  should be an expression. 9case exp of alts :if exp then exp else exp ;local declarations with let <lambda expression =negation expression - exp >ordinary application ?infix application @literal constant Adata constructor B variable Cliteral. E Values of this type hold the abstract value of the literal, not the 3 precise string representation used. For example, 10, 0o12 and 0xa  have the same representation. DGHC unboxed double literal EGHC unboxed float literal FGHC unboxed integer literal GGHC unboxed string literal HGHC unboxed character literal Ifloating point literal Jinteger literal Kstring literal Lcharacter literal MClass assertions. * In Haskell 98, the argument would be a tyvar, but this definition 5 allows multiple parameters, and allows them to be types. O%Haskell types and type constructors. Pnamed type or type constructor Qtype variable R"application of a type constructor S tuple type Tfunction type U!A type qualified with a context. - An unqualified type has an empty context. W+Safety level for invoking a foreign entity X!call will not generate callbacks Ycall may generate callbacks ZA guarded right hand side | exp = exp. . The first expression will be Boolean-valued. \6The right hand side of a function or pattern binding. ]guarded right hand side (gdrhs) ^unguarded right hand side (exp) _BThe type of a constructor argument or field, optionally including  a strictness annotation. `non-strict component astrict component, marked with "!" b#Declaration of a data constructor. crecord constructor dordinary data constructor eClauses of a function binding. tAssociativity of an operator. u*right-associative operator (declared with infixr) v)left-associative operator (declared with infixl). w(non-associative operator (declared with infix) xImport specification. yT(C_1,...,C_n): / a class imported with some of its methods, or 4 a datatype imported with some of its constructors. zT(..): . a class imported with all of its methods, or 3 a datatype imported with all of its constructors. {T: 0 the name of a class, datatype or type synonym. | variable }Import declaration. position of the import keyword. name of the module imported.  imported  qualified? optional alias name in an  as clause. (optional list of import specifications.  The B is C if the names are excluded  by hiding. Export specification. module M:  re-export a module. T(C_1,...,C_n): / a class exported with some of its methods, or 4 a datatype exported with some of its constructors. T(..): . a class exported with all of its methods, or 3 a datatype exported with all of its constructors. T: * a class or datatype exported abstractly,  or a type synonym.  variable A Haskell source module. A name (cname/) of a component of a class or data type in an import  or export specification. name of a data constructor name of a method or field Operators, appearing in infix declarations. constructor operator (conop) variable operator (varop) $Possibly qualified infix operators (qop), appearing in expressions. constructor operator (qconop) variable operator (qvarop) AThis type is used to represent variables, and also constructors. varsym or consym varid or conid =This type is used to represent qualified variables, and also  qualified constructors. )built-in constructor with special syntax unqualified name "name qualified with a module name "Constructors with special syntax. F These names are never qualified, and always refer to builtin type or  data constructors. list data constructor (:) n-ary tuple type and data  constructors (,) etc function type constructor -> list type constructor [] unit type and data constructor () The name of a Haskell module. A position in the source.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}~x|{zytwvugsrqponmlkjihbdc_a`ef\^]Z[WYXUVNMOTSRQP'BA@?>=<;:9876543210/.-,+*)(  &%$#"! CLKJIHGFED1   &%$#"! 'BA@?>=<;:9876543210/.-,+*)(C LKJIHGFEDMNOTSRQPUVWYXZ[\^]_a`bdcefg srqponmlkjihtwvux|{zy}~portable experimentallibraries@haskell.org Safe-InferedGThings that can be pretty-printed, including all the syntactic objects  in Language.Haskell.Syntax. Pretty-printing parameters. Note: the 3 must be positive and less than all other indents. #indentation of a class or instance indentation of a do -expression indentation of the body of a  case expression %indentation of the declarations in a  let expression %indentation of the declarations in a  where clause #indentation added for continuation ' lines that would otherwise be offside  blank lines between statements? Pretty-printing style to use add GHC-style LINE pragmas to output? not implemented yet  Varieties of layout we can use. everything on a single line )inline decls, with newlines between them classical layout made explicit classical layout CThe default mode: pretty-print using the offside rule and sensible  defaults. *pretty-print with a given style and mode. 6pretty-print with the default style and a given mode. (pretty-print with the default style and . 6DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab" "  ' DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abportable experimentallibraries@haskell.org Safe-Infered Monad for parsing %Static parameters governing a parse. > More to come later, e.g. literate mode, language extensions. 'original name of the file being parsed The result of a parse. "The parse failed at the specified ) source location, with an error message. 'The parse succeeded, yielding a value.  Default parameters for a parse, 2 currently just a marker for an unknown filename. IDiscard some input characters (these must not include tabs or newlines). 5Discard the next character, which must be a newline. 1Discard the next character, which must be a tab. %cdefghcdefghportable experimentallibraries@haskell.org Safe-Inferedportable experimentallibraries@haskell.org Safe-InferedC      !"#$%&'()*+,-./0123456789:;<=>?C      !"#$%&'()*+,-./0123456789:;<=>?C>=<;:9876543210/.-,+*)('&%$#"!      ?A>=<;:9876543210/.-,+*)('&%$#"!      ?portable experimentallibraries@haskell.orgNone@FParse of a string, which should contain a complete Haskell 98 module. AFParse of a string, which should contain a complete Haskell 98 module. @A @A @A@Ai            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^^_`abcdefegghijklmnopqrstuvwxyz{|}~~      !"#$%&'()*+,-./0123456789:;<=><=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdehaskell-src-1.0.1.5Language.Haskell.PrettyLanguage.Haskell.SyntaxLanguage.Haskell.ParseMonadLanguage.Haskell.ParseUtilsLanguage.Haskell.LexerLanguage.Haskell.ParserPrettypretty-1.1.1.0Text.PrettyPrint.HughesPJstyleribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeMode HsGuardedAlt HsGuardedAltsHsUnGuardedAltHsAlt HsFieldUpdateHsStmt HsLetStmt HsQualifier HsGenerator HsPatField HsPFieldPatHsPat HsPIrrPat HsPWildCardHsPAsPatHsPRecHsPParenHsPListHsPTupleHsPApp HsPInfixAppHsPNegHsPLitHsPVarHsExpHsIrrPat HsWildCardHsAsPat HsExpTypeSig HsListCompHsEnumFromThenToHsEnumFromThen HsEnumFromTo HsEnumFrom HsRecUpdate HsRecConstrHsRightSection HsLeftSectionHsParenHsListHsTupleHsDoHsCaseHsIfHsLetHsLambdaHsNegAppHsApp HsInfixAppHsLitHsConHsVar HsLiteral HsDoublePrim HsFloatPrim HsIntPrim HsStringPrim HsCharPrimHsFracHsIntHsStringHsCharHsAsst HsContextHsTypeHsTyConHsTyVarHsTyApp HsTyTupleHsTyFun HsQualTypeHsSafetyHsUnsafeHsSafe HsGuardedRhsHsRhs HsGuardedRhssHsUnGuardedRhs HsBangType HsUnBangedTy HsBangedTy HsConDecl HsRecDeclHsMatchHsDeclHsForeignExportHsForeignImport HsPatBind HsFunBind HsTypeSig HsDefaultDecl HsInstDecl HsClassDecl HsNewTypeDecl HsInfixDecl HsDataDecl HsTypeDeclHsAssoc HsAssocRight HsAssocLeft HsAssocNone HsImportSpec HsIThingWith HsIThingAllHsIAbsHsIVar HsImportDecl importLoc importModuleimportQualifiedimportAs importSpecs HsExportSpecHsEModuleContents HsEThingWith HsEThingAllHsEAbsHsEVarHsModuleHsCName HsConName HsVarNameHsOpHsConOpHsVarOpHsQOpHsQConOpHsQVarOpHsNameHsSymbolHsIdentHsQNameSpecialUnQualQual HsSpecialConHsCons HsTupleConHsFunCon HsListCon HsUnitConModuleSrcLoc srcFilenamesrcLine srcColumn prelude_modmain_mod main_name unit_con_nametuple_con_namelist_cons_nameunit_con tuple_conunit_tycon_namefun_tycon_namelist_tycon_nametuple_tycon_name unit_tycon fun_tycon list_tycon tuple_tyconPPHsMode classIndentdoIndent caseIndent letIndent whereIndent onsideIndentspacinglayout linePragmascommentsIndentPPLayout PPNoLayoutPPInLine PPSemiColon PPOffsideRule defaultModeprettyPrintStyleModeprettyPrintWithMode prettyPrintLexrunLP ParseMode parseFilename LexContextLayoutNoLayout ParseResult ParseFailedParseOkdefaultParseModerunParserWithMode runParseratSrcLoc getSrcLocpushCurrentContext popContextgetInputdiscard lexNewlinelexTablexWhile alternativecheckBOLsetBOL startToken getOffside pushContextL popContextL splitTyConApp checkContextcheckAssertioncheckDataHeadercheckClassHeadercheckInstHeader checkPattern checkExpr checkValDefcheckClassBody checkUnQual checkPrecmkRecConstrOrUpdate checkRevDeclsTokenEOF KW_UnsafeKW_Safe KW_Qualified KW_Hiding KW_ExportKW_AsKW_WhereKW_TypeKW_ThenKW_Of KW_NewType KW_ModuleKW_Let KW_Instance KW_InfixR KW_InfixLKW_InfixKW_In KW_ImportKW_If KW_ForeignKW_ElseKW_Do KW_Deriving KW_DefaultKW_DataKW_ClassKW_Case ExclamationMinus DoubleArrowTildeAt RightArrow LeftArrowBar BackslashEquals DoubleColonColonDotDot BackQuote UnderscoreComma RightSquare LeftSquare VRightCurly RightCurly LeftCurly SemiColon RightParen LeftParen StringTok CharacterFloatTokIntTokQConSymQVarSymConSymVarSymQConIdConIdQVarIdVarIdlexer parseModuleparseModuleWithModeghc-prim GHC.TypesBoolTrue$fPrettyHsCName$fPrettyHsName $fPrettyHsOp$fPrettyHsQName $fPrettyHsQOp$fPrettyHsFieldUpdate$fPrettyHsStmt$fPrettyHsGuardedAlt$fPrettyHsGuardedAlts $fPrettyHsAlt$fPrettyHsPatField $fPrettyHsPat $fPrettyHsExp$fPrettyHsLiteral$fPrettyHsGuardedRhs $fPrettyHsRhs$fPrettyHsType$fPrettyHsQualType$fPrettyHsBangType$fPrettyHsConDecl$fPrettyHsMatch$fPrettyHsSafety$fPrettyHsAssoc$fPrettyHsDecl$fPrettyHsImportSpec$fPrettyHsImportDecl$fPrettyHsExportSpec$fPrettyModule$fPrettyHsModule $fMonadDocM $fFunctorDocM $fMonadLex$fMonadP$fMonoidParseResult$fMonadParseResult$fApplicativeParseResult$fFunctorParseResult