úÎ '"gc      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com>portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com>      portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com> portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com> portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com> !"#$%&'()*+,-./ !"#$%&'()*+,-./ !"#$%&'()*+,-./ portable (template-haskell) experimentalMatt Morrow <mjm2002@gmail.com>/  !"#$%&'()*+,-./0.The strategy for producing QuasiQuoters which 2 this datatype aims to facilitate is as follows. 0 Given a collection of datatypes which make up 1 the to-be-quasiquoted languages AST, make each 2 type in this collection an instance of at least  Show and Lift. Now, assuming parsePat and  parseExp, both of type  String -> Q a (where a 5 is the top level type of the AST), are the pair of 7 functions you wish to use for parsing in pattern and 3 expression context respectively, put them inside  a Quoter$ datatype and pass this to quasify. 5The type passed in must have a Show instance which 8 produces a valid Haskell expression. Returns an empty  String3 if this is not the case. This is not TH-specific,  but useful in general. 9 unQ = unsafePerformIO . runQEStolen from Igloo' s th-lift. FProduces pretty code suitable  for human consumption. RThe arity of a Type. TRandomly useful. 10123456789:;<=>?@AcBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_0456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY0123Z[\]^_00123123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`  ghci> [$hs|\x -> (x,x)|] 42  (42,42) * ghci> (\[$hs|a@(x,_)|] -> (a,x)) (42,88)  ((42,88),42) `a`a`abbbd    !"#$%&'()*+,-./0123456789:;;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnhaskell-src-meta-0.0.3.1Language.Haskell.Meta.QQ.Here&Language.Haskell.Meta.Syntax.Translate!Language.Haskell.Meta.Syntax.VarsLanguage.Haskell.Meta.ParseLanguage.Haskell.Meta.UtilsLanguage.Haskell.Meta.QQ.HsLanguage.Haskell.Meta.QQ.Vixey"Language.Haskell.TH.Instances.LiftLanguage.Haskell.Meta.SyntaxLanguage.Haskell.MetahereToLoctoLocToStmttoStmtToDectoDecToExptoExpToPattoPatToTypetoTypeToLittoLitToNametoNameerrorMsg toFieldExp.->.foldAppT hsBindsToDecshsBangTypeToStrictTypehsMatchesToFunDhsMatchToClause hsRhsToBodyhsGuardedRhsToBody hsStmtToGuardVarsvarsfvsbvsparsePatparseExp parseType parseDecs parseFileparseFileContentsparseFileContentsWithMode parseHsModule parseHsDecls parseHsType parseHsExp parseHsPat pprHsModule moduleDecls emptySrcLoc emptyHsModuleQuoterexpQpatQ cleanNamesprettyppppDocgprettyunQnameToRawCodeStr|$||.||->|unForall functionTmkVarTmyNamesrenameTapplyTsubstT deriveLiftderiveLiftPrettysplitCon strictTypeTyvarStrictTypeTyconTypes conToConTypedecCons decTyVarsdecName foreignNameunwindTunwindEarityT typeToName nameSpaceOfconNamerecCName dataDCons fromDataConI fromTyConIquasifytoExpQtoPatQ showToPatQeitherQ normalizeThspatvixrenameTs