^?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6"7"8"9":";"<"=">"?"@"A#B#C#D#E#F#G#H$I$J$K$L$M$N$O%P%Q%R%S%T%U%V%W%X&Y&Z&[&\&]&^&_&`&a'b(c(d(e)f)g)h)i)j)k)l)m)nopqrstuvwxyz{|}~*******************************++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-.........// / / / / //00000000112222222 2!2"2#3$3%3&3'3(3)3*3+3,3-3.4/404142434445464748494:4;4<4=4>586 Safe-Inferred?XCharacters that are valid as the leading character of an identifier in a HERMIT script. @=Characters that are valid identifier elements (a superset of ?) in a HERMIT script. AACharacters that are valid in infix operators in a HERMIT script. BSChars that are valid as the leading character of an identifier in a Core fragment. C=Characters that are valid identifier elements (a superset of B) in a Core fragment. DACharacters that are valid in infix operators in a Core fragment. ?@ABCDE?@ABCD?@ABCDENone9A simple expression language AST, for things parsed from F or JSON structures. List of expressions Core Fragment  Application. Commands (to be looked up in 57). (Variable names (refers to source code). G.Use ghci Parser.hs to run this test function. HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~G !"  !"  !"{HIJKLMN [ZYXWVUTSRQPO\]^_`abcdefghijklmnopqrstuvwxyz{|}~G !"8 Safe-Inferred5Determine if a list contains no duplicated elements. A generalisation of  to any equivalence relation.  equivalent = equivalentBy (==) /Determine if all elements of a list are equal. 'Perform the monadic action only in the  case. 9 Safe-Inferred   Safe-Inferred#$#$#$#$None% Convert a % to a list of user-readable strings. &#Show a human-readable version of a . ' Get the unqualified name from a . ($Get the fully qualified name from a . )DConvert a variable to a neat string for printing (unqualfied name). *Converts a GHC  to a Template Haskell , going via a F. + Converts an  to a Template Haskell , going via a F. , Compare a F to a  for equality. F Strings containing a period are assumed to be fully qualified names. - Compare a F to a  for equality. See ,. . Compare a  to a  for equality. See ,. / Compare a  to a  for equality. See ,. 0Find 8s matching a given fully qualified or unqualified name. [ If given name is fully qualified, will only return first result, which is assumed unique. 1Find  s matching a . See 0. 2Pretty-print an identifier. 3 Erase all  in a variable if it is is an , or do nothing if it's a  or  (which have no ). 4Determine if a  is not an element of a . %&'()*+,-./01234       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi jklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@%&'()*+,-./01234(23) *+.,/-('01 4%&%&'()*+,-./01234None25LCrumbs record a path through the tree, using descriptive constructor names. sIA (potentially recursive) definition is an identifier and an expression. 6 In GHC Core, recursive definitions are encoded as (,  [ ) pairs. ! This data type is isomorphic. u3A program is a telescope of nested binding groups. C That is, each binding scopes over the remainder of the program. ) In GHC Core, programs are encoded as [ ]]. ! This data type is isomorphic. v0A binding group and the program it scopes over. wAn empty program. x0Unlike everything else, there is no synonym for  $ $ provided by GHC, so we define one. y'Get the list of bindings in a program. z)Build a program from a list of bindings. ` Note that bindings earlier in the list are considered scope over bindings later in the list. {Extract the list of identifier/'expression pairs from a binding group. |%Convert a definition to an identifier/expression pair. }VConvert a list of recursive definitions into an (isomorphic) recursive binding group. ~ Syntactic Equality of programs. &Syntactic Equality of binding groups. -Syntactic Equality of recursive definitions. #Syntactic Equality of expressions. )Syntactic Equality of case alternatives. Syntactic Equality of s. Syntactic Equality of  s. Alpha equality of programs. "Alpha equality of binding groups. )Alpha equality of recursive definitions. Alpha equality of expressions. %Alpha equality of case alternatives. Alpha equality of types. Alpha equality of coercions. :List all identifiers bound at the top-level in a program. -List all variables bound in a binding group. 7Return the identifier bound by a recursive definition. 0List the variables bound by a case alternative. *Find all free variables in an expression. ,Find all free identifiers in an expression. :Find all locally defined free variables in an expression. <Find all locally defined free identifiers in an expression. _Find all free identifiers in a binding group, which excludes any variables bound in the group. VFind all free variables is a recursive definition, which excludes the bound variable. fFind all free variables in a case alternative, which excludes any variables bound in the alternative. &Find all free variables in a program. #Find all free variables in a type. 'Find all free variables in a coercion. GHC's * function throws an error if applied to a .  This function returns the  of a , but otherwise behaves as . GHC's * function throws an error if applied to a . E This function catches that case as failure in an arbitrary monad. Returns True iff the expression is a   expression at its top level. )Count the number of nested applications. 6Map a function over the RHS of each case alternative. Return the domain/-codomain type of an endofunction expression. SReturn the domain and codomain types of a function type, if it is a function type. ?Return the domain and codomain types of a function expression. !Check two expressions have types a -> b and b -> a , returning (a,b).  Converts a 5 into the 5+ pointing to its left-sibling, if a such a 5 exists. Q This is for backwards compatibility purposes with the old Int representation.  Converts a 5 into the 5, pointing to its right-sibling, if a such a 5 exists. Q This is for backwards compatibility purposes with the old Int representation. r56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Aq56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~quwvstx~}|yz{5rqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987625=rqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876stuwvxyz{|}~ANone)ZThe HERMIT context, containing all bindings in scope and the current location in the AST. G The bindings here are lazy by choice, so that we can avoid the cost / of building the context if we never use it. B#All (important) bindings in scope. C'The depth of the most recent bindings. DThe E$ to the current node from the root. F#The top-level lexical environment. GGHC rewrite RULES. >A class of contexts that store the Global Reader Environment. 2A class of contexts that store GHC rewrite rules. AA class of contexts from which HERMIT bindings can be retrieved. iA class of contexts that stores the set of variables in scope that have been bound during the traversal. AA class of contexts that can have HERMIT bindings added to them. 9Add a complete set of parrallel bindings to the context. N (Parallel bindings occur in recursive let bindings and case alternatives.) ? This can also be used for solitary bindings (e.g. lambdas). F Bindings are added in parallel sets to help with shadowing issues. HERMIT''s representation of variable bindings. l Bound expressions cannot be inlined without checking for shadowing issues (using the depth information). (A universally quantified type variable. \A case wildcard binder. We store both the scrutinised expression, and the case alternative   and variables. (A variable bound in a case alternative. LA (potentially) recursive binding of a superexpression of the current node. 4A (potentially) recursive binding of an expression. *A non-recursive binding of an expression. A lambda-bound variable. OThe depth of a binding. Used, for example, to detect shadowing when inlining. Retrieve the expression in a , if there is one. Retrieve the expression in a , if there is one. H%Add a single binding to the context. 2Add all bindings in a binding group to a context. HAdd the binding for a recursive definition currently under examination. x Note that because the expression may later be modified, the context only records the identifier, not the expression. UAdd a list of recursive bindings to the context, except the nth binding in the list. ? The idea is to exclude the definition being descended into. 8Add a wildcard binding for a specific case alternative. *Add a lambda bound variable to a context. B All that is known is the variable, which may shadow something.  If so, we don'@t worry about that here, it is instead checked during inlining. Add the variables bound by a H in a case. ) They are all bound at the same depth. 9Add a universally quantified type variable to a context. CList all variables bound in the context that match the given name. /Determine if a variable is bound in a context. 0Lookup the binding for a variable in a context. Lookup the depth of a variable's binding in a context. ^Lookup the binding for a variable in a context, ensuring it was bound at the specified depth. Create the initial HERMIT  by providing a . I Extend the E stored in the HERMIT context. J Retrieve the E/ to the current node, from the HERMIT context. KBThe bindings are added to the base context and the extra context. L!The bindings are just discarded. :MBCDFGHNOPQRIJSTUKL'''MBCDFGHNOPQRIJSTUKLNone%<CoreTC is a sum type for use by KURE. CoreTC = Core + TyCo <TyCo is a sum type for use by KURE. TyCo = Type + Coercion  A coercion. A type. iCore is a sum type for use by KURE. Core = ModGuts + CoreProg + CoreBind + CoreDef + CoreExpr + CoreAlt A case alternative. An expression. A recursive definition. A binding group. 5A program (a telescope of top-level binding groups).  The module. Alpha equality of  fragments. Alpha equality of  fragments. Alpha equality of  fragments. Syntactic equality of  fragments. Syntactic equality of  fragments. Syntactic equality of  fragments. Find all free variables in a  node. Find all free variables in a  node. Find all free variables in a  node. Promote a translate on . Promote a translate on u. Promote a translate on  ]. Promote a translate on s. Promote a translate on  ^. Promote a translate on  [. Promote a translate on . Promote a translate on  . Promote a rewrite on . Promote a rewrite on u. Promote a rewrite on  ]. Promote a rewrite on s. Promote a rewrite on  ^. Promote a rewrite on  [. Promote a rewrite on . Promote a rewrite on  . #Promote a bidirectional rewrite on  [. 9VWXYZ[\]^_`abcdefg''/VWXYZ[\]^_`abcdefgNoneA message packet. #The HERMIT monad is kept abstract. 'A way of sending messages to top level A store of saved definitions. $A label for individual definitions. Eliminator for . $Get the stash of saved definitions. h(Replace the stash of saved definitions. "Save a definition for future use. &Lookup a previously saved definition.  can be lifted to . MMake a unique global identifier for a specified type, using a provided name. FMake a unique identifier for a specified type, using a provided name. IMake a unique type variable for a specified kind, using a provided name. MMake a unique coercion variable for a specified type, using a provided name. DMake a new variable of the same type, with a modified textual name. !ijhklmnopqrsijhklmnopqrs NoneTranslate a module. H Slightly different to the other congruence combinators: it passes in all1 of the original to the reconstruction function.  Rewrite the u child of a module. Translate an empty list. "Translate a program of the form: ( ] : u) 0Rewrite all children of a program of the form: ( ] : u) 0Rewrite any children of a program of the form: ( ] : u) -Rewrite one child of a program of the form: ( ] : u) 'Translate a binding group of the form: NonRec   [ 5Rewrite all children of a binding group of the form: NonRec   [ 5Rewrite any children of a binding group of the form: NonRec   [ 2Rewrite one child of a binding group of the form: NonRec   [ 'Translate a binding group of the form: Rec [s] 5Rewrite all children of a binding group of the form: Rec [s] 5Rewrite any children of a binding group of the form: Rec [s] 2Rewrite one child of a binding group of the form: Rec [s] .Translate a recursive definition of the form: Def   [ <Rewrite all children of a recursive definition of the form: Def   [ <Rewrite any children of a recursive definition of the form: Def   [  9Rewrite one child of a recursive definition of the form: Def   [ !+Translate a case alternative of the form: ( , [],  [) "9Rewrite all children of a case alternative of the form: ( , ,  [) #9Rewrite any children of a case alternative of the form: ( , ,  [) $6Rewrite one child of a case alternative of the form: ( , ,  [) %%Translate an expression of the form: Var  & Rewrite the % child in an expression of the form: Var  '%Translate an expression of the form: Lit  b ( Rewrite the  b% child in an expression of the form: Lit  b )%Translate an expression of the form: App  [  [ *3Rewrite all children of an expression of the form: App  [  [ +3Rewrite any children of an expression of the form: App  [  [ ,0Rewrite one child of an expression of the form: App  [  [ -%Translate an expression of the form: Lam   [ .3Rewrite all children of an expression of the form: Lam   [ /3Rewrite any children of an expression of the form: Lam   [ 00Rewrite one child of an expression of the form: Lam   [ 1%Translate an expression of the form: Let  ]  [ 23Rewrite all children of an expression of the form: Let  ]  [ 33Rewrite any children of an expression of the form: Let  ]  [ 40Rewrite one child of an expression of the form: Let  ]  [ 5%Translate an expression of the form: Case  [   [ ^] 63Rewrite all children of an expression of the form: Case  [   [ ^] 73Rewrite any children of an expression of the form: Case  [   [ ^] 80Rewrite one child of an expression of the form: Case  [   [ ^] 9%Translate an expression of the form: Cast  [   :3Rewrite all children of an expression of the form: Cast  [   ;3Rewrite any children of an expression of the form: Cast  [   <0Rewrite one child of an expression of the form: Cast  [   =%Translate an expression of the form: Tick x  [ >3Rewrite all children of an expression of the form: Tick x  [ ?3Rewrite any children of an expression of the form: Tick x  [ @3Rewrite any children of an expression of the form: Tick x  [ A%Translate an expression of the form: Type  B Rewrite the % child in an expression of the form: Type  C%Translate an expression of the form: Coercion   D Rewrite the  % child in an expression of the form: Coercion   E#Translate a definition of the form NonRec   [ or Def   [ F1Rewrite all children of a definition of the form NonRec   [ or Def   [ G1Rewrite any children of a definition of the form NonRec   [ or Def   [ H.Rewrite one child of a definition of the form NonRec   [ or Def   [ I'Translate a binding group of the form: Rec [(,  [)] J5Rewrite all children of a binding group of the form: Rec [(,  [)] K5Rewrite any children of a binding group of the form: Rec [(,  [)] L2Rewrite one child of a binding group of the form: Rec [(,  [)] M"Translate a program of the form: (NonRec   [) : u N4Rewrite all children of an expression of the form: (NonRec   [) : u O4Rewrite any children of an expression of the form: (NonRec   [) : u P1Rewrite one child of an expression of the form: (NonRec   [) : u Q&Translate an expression of the form: (Rec [s]) : u R4Rewrite all children of an expression of the form: (Rec [s]) : u S4Rewrite any children of an expression of the form: (Rec [s]) : u T1Rewrite one child of an expression of the form: (Rec [s]) : u U&Translate an expression of the form: (Rec [(,  [)]) : u V4Rewrite all children of an expression of the form: (Rec [(,  [)]) : u W4Rewrite any children of an expression of the form: (Rec [(,  [)]) : u X1Rewrite one child of an expression of the form: (Rec [(,  [)]) : u Y%Translate an expression of the form: Let (NonRec   [)  [ Z3Rewrite all children of an expression of the form: Let (NonRec   [)  [ [3Rewrite any children of an expression of the form: Let (NonRec   [)  [ \0Rewrite one child of an expression of the form: Let (NonRec   [)  [ ]%Translate an expression of the form: Let (Rec [s])  [ ^3Rewrite all children of an expression of the form: Let (Rec [s])  [ _3Rewrite any children of an expression of the form: Let (Rec [s])  [ `0Rewrite one child of an expression of the form: Let (Rec [s])  [ a%Translate an expression of the form: Let (Rec [(,  [)])  [ b3Rewrite all children of an expression of the form: Let (Rec [(,  [)])  [ c3Rewrite any children of an expression of the form: Let (Rec [(,  [)])  [ d0Rewrite one child of an expression of the form: Let (Rec [(,  [)])  [ e%Translate an expression of the form: Case  [   [( , [],  [)] f3Rewrite all children of an expression of the form: Case  [   [( , [],  [)] g3Rewrite any children of an expression of the form: Case  [   [( , [],  [)] h0Rewrite one child of an expression of the form: Case  [   [( , [],  [)] iTranslate a type of the form: TyVarTy  j Rewrite the  child of a type of the form: TyVarTy  kTranslate a type of the form: LitTy  l Rewrite the  child of a type of the form: LitTy  mTranslate a type of the form: AppTy   n,Rewrite all children of a type of the form: AppTy   o,Rewrite any children of a type of the form: AppTy   p)Rewrite one child of a type of the form: AppTy   qTranslate a type of the form: FunTy   r,Rewrite all children of a type of the form: FunTy   s,Rewrite any children of a type of the form: FunTy   t)Rewrite one child of a type of the form: FunTy   uTranslate a type of the form: ForAllTy   v,Rewrite all children of a type of the form: ForAllTy   w,Rewrite any children of a type of the form: ForAllTy   x)Rewrite one child of a type of the form: ForAllTy   yTranslate a type of the form: TyConApp x [ ] z,Rewrite all children of a type of the form: TyConApp x [ ] {,Rewrite any children of a type of the form: TyConApp x [ ] |)Rewrite one child of a type of the form: TyConApp x [ ] }"Translate a coercion of the form: Refl  ~ Rewrite the " child of a coercion of the form: Refl  "Translate a coercion of the form:  TyConAppCo x [ ] 0Rewrite all children of a coercion of the form:  TyConAppCo x [ ] 0Rewrite any children of a coercion of the form:  TyConAppCo x [ ] -Rewrite one child of a coercion of the form:  TyConAppCo x [ ] "Translate a coercion of the form: AppCo     0Rewrite all children of a coercion of the form: AppCo     0Rewrite any children of a coercion of the form: AppCo     -Rewrite one child of a coercion of the form: AppCo     "Translate a coercion of the form: ForAllCo    0Rewrite all children of a coercion of the form: ForAllCo    0Rewrite any children of a coercion of the form: ForAllCo    -Rewrite one child of a coercion of the form: ForAllCo    "Translate a coercion of the form: CoVarCo   Rewrite the " child of a coercion of the form: CoVarCo  "Translate a coercion of the form:  AxiomInstCo   [ ] 0Rewrite all children of a coercion of the form:  AxiomInstCo   [ ] 0Rewrite any children of a coercion of the form:  AxiomInstCo   [ ] -Rewrite one child of a coercion of the form:  AxiomInstCo   [ ] "Translate a coercion of the form: UnsafeCo   0Rewrite all children of a coercion of the form: UnsafeCo   0Rewrite any children of a coercion of the form: UnsafeCo   -Rewrite one child of a coercion of the form: UnsafeCo   "Translate a coercion of the form: SymCo    Rewrite the  " child of a coercion of the form: SymCo   "Translate a coercion of the form: TransCo     0Rewrite all children of a coercion of the form: TransCo     0Rewrite any children of a coercion of the form: TransCo     -Rewrite one child of a coercion of the form: TransCo     "Translate a coercion of the form: NthCo t   0Rewrite all children of a coercion of the form: NthCo t   0Rewrite any children of a coercion of the form: NthCo t   -Rewrite one child of a coercion of the form: NthCo t   "Translate a coercion of the form: InstCo    0Rewrite all children of a coercion of the form: InstCo    0Rewrite any children of a coercion of the form: InstCo    -Rewrite one child of a coercion of the form: InstCo     Earlier versions of HERMIT used t as the crumb type.  This translation maps an t to the corresponding 5(, for backwards compatibility purposes. EBuilds a path to the first child, based on the old numbering system. u`Walking over modules, programs, binding groups, definitions, expressions and case alternatives. v"Walking over types and coercions. wWalking over coercions (only). xWalking over types (only). y`Walking over modules, programs, binding groups, definitions, expressions and case alternatives.      z{ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uvwxyu|}~E      !"#$%&'()*+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLYZ[\]^_`abcdMNOPQRSTUVWXefghijklmnopqrstuvwxyz{|}~     z{ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uvwxy None:Apply a transformation to a value in the current context. Lift GHC's collectArgs ?Succeeds if we are looking at an application of given function < returning zero or more arguments to which it is applied. ?Succeeds if we are looking at a fully saturated function call. ?Succeeds if we are looking at an application of given function DSucceeds if we are looking at an application of a data constructor. JSucceeds if we are looking at an application of a named data constructor. bApply a rewrite to all applications of a given function in a top-down manner, pruning on success. PApply a translate to all applications of a given function in a top-down manner, / pruning on success, collecting the results. VList the identifiers bound by the top-level binding group at the head of the program. ^List the identifiers bound by a recursive top-level binding group at the head of the program. ]Return the identifier bound by a non-recursive top-level binding at the head of the program. =Return the variable bound by a non-recursive let expression. 9List all identifiers bound in a recursive binding group. 2Return the variable bound by a lambda expression. .List the variables bound by a let expression. :List the identifiers bound by a recursive let expression. =Return the variable bound by a non-recursive let expression. ]List all variables bound by a case expression (in the alternatives and the wildcard binder). !Return the case wildcard binder. CList the variables bound by all alternatives in a case expression. Find the depth of a variable' s binding. Determine if the current variable matches the given variable, and is bound at the specified depth (helpful to detect shadowing). Determine if the current expression is an occurrence of the given variable, bound at the specified depth (helpful to detect shadowing). Lifted version of . hFind the unique variable bound in the context that matches the given name, failing if it is not unique. @Lookup the name in the context first, then, failing that, in GHC's global reader environment. #Constructs a common error message.  Argument F/ should be the desired form of the expression. ,- ,- None-*The class of things that can be made into s.  To be an  there must exist an isomorphic  type that is an instance of .. An isomorphic wrapper. Wrap a value in a . Unwrap a value from a . A  is a collection of /s.  Looking up a / (via an / key) returns a list, as there can be multiple /s with the same name. An  is a /D value with some associated meta-data (name, help string and tags). Get the name of an . Get the / value stored in an . Get the list of help F s for an .  List all the s associated with an  "Tags are meta-data that we add to (s to make them sortable and searchable. Add a  to an .  Remove a  from an .  Check if an  has the specified . +A data type of logical operations on tags. 7Requirement: commands cannot have the same name as any  , (or the help function will not find it).  These should be  user facing, because they give the user : a way of sub-dividing our confusing array of commands. 4A command that will be removed in a future release; @ it has probably been renamed or subsumed by another command. Things we are trying out. ,An incomplete or potentially buggy command. ?Commands that are not type safe (may cause Core Lint to fail), 9 or may otherwise change the semantics of the program. 3A command that uses its context, such as inlining. !Version control for Core syntax. )Commands specifically to help debugging. 5Operation has a (perhaps undocumented) precondition. 'Commute is when you swap nested terms. &Introduce something, like a new name.  Something that passes or fails.  A question we ask.  Uses  or  to focus onto something.  ,Command operates on local nodes only, O(1).  -Command may make a deep change, can be O(n).  $Command may operate multiple times. :; command. *The arrow of evaluation (reduces a term). Shell-specific command. Help information for Fs is stored as a list of strings, designed for multi-line displaying.  names are just strings. ?Lists all the tags paired with a short description of what they' re about. An "and" on s. An "or" on s. A "not" on s. The primitive way to build an .  Get all the $s which match a given tag predicate . and box a Translate of the appropriate type. Build a <= from names to / values. Build a <=! from names to help information. u012345     6789:;<=>?@ABCDEFGHIJKLX     \     <015432     6789:;<=>?@ABCDEFGHIJKL NoneExposed debugging s. If the  fails, print out the , with a message. Print out the , with a message. 4Just say something, every time the rewrite is done. !Show before and after a rewrite.  None!+Traditional Static Argument Transformation "PStatic Argument Transformation that only considers type arguments to be static. #`Static Argument Transformations which requires that arguments in the given position are static. $ZGeneralized Static Argument Transformation, which allows static arguments to be filtered.  !"#$Dgiven list of static args and positions, decided which to transform M !"#$ !#$" !"#$MNone%IExternals that reflect GHC functions, or are derived from GHC functions. &cSubstitute all occurrences of a variable with an expression, in either a program or an expression. 'OSubstitute all occurrences of a variable with an expression, in an expression. NKSubstitute all occurrences of a variable with an expression, in a program. OTSubstitute all occurrences of a variable with an expression, in a case alternative. P from GHC documentation: De-shadowing the program is sometimes a useful pre-pass. P It can be done simply by running over the bindings with an empty substitution, I becuase substitution returns a result that has no-shadowing guaranteed. (Actually, within a single type) there might still be shadowing, because  >0 is a no-op for the empty substitution, but that's probably OK.) (-Determine whether an identifier is in scope. )@Lookup a rule and attempt to construct a corresponding rewrite. +.Try to figure out the arity of an identifier. ,Run the Core Lint typechecker. ' Fails on errors, with error messages.  Succeeds returning warnings. -LNote: this can miss several things that a whole-module core lint will find. N For instance, running this on the RHS of a binding, the type of the RHS will U not be checked against the type of the binding. Running on the whole let expression  will catch that however. Q/Get all the specialization rules on a binding. 9 These are created by SpecConstr and other GHC passes. RPromote Q to CoreBind. S2Find all specialization rules in a Core fragment. /5Top-down traversal tuned to matching function calls. 0Lifted version of  . 1Zap the  in a zombie identifier. 2Apply occurAnalyseExprR to all sub-expressions. 3jOccurrence analyse an expression, failing if the result is syntactically equal to the initial expression. 4pOccurrence analyse all sub-expressions, failing if the result is syntactically equal to the initial expression. 5Run GHC'7s occurrence analyser, and also eliminate any zombies. %&'NOPT()*UVWX+,-.QRS/012345Y%&'()*+,-./012345%/&'()*0+-,.24351%&'NOPT()*UVWX+,-.QRS/012345YNone6Externals for alpha-renaming. 7AList all visible identifiers (in the expression or the context). 84If a name is provided replace the string with that, . otherwise modify the string making sure to not# clash with any visible variables. 9oUse the optional argument if given, otherwise generate a new name avoiding clashes with the list of variables. ZdInvent a new String based on the old one, but avoiding clashing with the given list of identifiers. [RRemove all variables from the first set that shadow a variable in the second set. \Lifted version of [. 3 Additionally, it fails if no shadows are found. :FRename local variables with manifestly unique names (x, x0, x1, ...). * Does not rename top-level definitions. ;1Replace all occurrences of a specified variable. U Arguments are the variable to replace and the replacement variable, respectively. ]:Given a variable to replace, and a replacement, produce a  ->  function that  acts as an identity for all Bs except the one to replace, for which it returns the replacment.  Don't export this, it' ll likely just cause confusion. ^IGiven a lists of variables to replace, and their replacements, produce a  ->  function that  acts as in identity for all Cs except the ones to replace, for which it returns the replacment.  Don't export this, it' ll likely just cause confusion. <FAlpha rename a lambda binder. Optionally takes a suggested new name. =DAlpha rename a case binder. Optionally takes a suggested new name. _]Rename the specified variable in a case alternative. Optionally takes a suggested new name. ``Rename the specified variables in a case alternative, using the suggested names where provided. >YRename the variables bound in a case alternative with the given list of suggested names. ?6Rename the specified variables in a case alternative. @4Rename all identifiers bound in a case alternative. A3Rename all identifiers bound in a case expression. aQAlpha rename a non-recursive let binder. Optionally takes a suggested new name. b~Alpha rename a non-recursive let binder if the variable appears in the argument list. Optionally takes a suggested new name. cbRename the specified identifier bound in a recursive let. Optionally takes a suggested new name. d_Rename the specified identifiers in a recursive let, using the suggested names where provided. BNRename the identifiers bound in a Let with the given list of suggested names. C/Rename the specified variables bound in a let. D'Rename all identifiers bound in a Let. eWAlpha rename a non-recursive top-level binder. Optionally takes a suggested new name. foRename the specified identifier bound in a recursive top-level binder. Optionally takes a suggested new name. gRename the specified identifiers in a recursive top-level binding at the head of a program, using the suggested names where provided. EyRename the identifiers bound in the top-level binding at the head of the program with the given list of suggested names. FtAlpha rename any bindings at this node. Note: does not rename case alternatives unless invoked on the alternative. 6789Z[\:;]^<=_`>?@AabcdBCDefgEFh6789:;<=>?@ABCDEF6F<=>?@ABCDE:789; 6789Z[\:;]^<=_`>?@AabcdBCDefgEFhNone Ms for inlining variables. N@If the current variable matches the given name, then inline it. OHIf the current variable matches any of the given names, then inline it. PInline the current variable. QtInline the current identifier if it is a case binder, using the scrutinee rather than the case-alternative pattern. RqInline the current identifier if is a case binder, using the case-alternative pattern rather than the scrutinee. S;The implementation of inline, an important transformation. : This *only* works if the current expression has the form Var v( (it does not traverse the expression). P It can trivially be prompted to more general cases using traversal strategies. iOEnsure all the free variables in an expression were bound above a given depth.  Assumes minimum depth is 0. TReturn the unfolding of an identifier, and a predicate over the binding depths of all variables within that unfolding to determine if they have been captured in their new location. jIConvert lhs of case alternative to a constructor application expression, 3 failing in the case of the DEFAULT alternative. N Accepts a list of types to apply to the constructor before the value args.   data T a b = C a b Int  Pseudocode: C alt2Exp (...) [a,b] (C, [x,y,z]) ==> C a b (x::a) (y::b) (z::Int) UCGet list of possible inline targets. Used by shell for completion. k%Build a CoreExpr for a DFunUnfolding GHIJKLMNOPQRS5Only inline identifiers that satisfy this predicate. iTjUkGHIJKLMNOPQRSTUMGIHJLKTPNOQRSUGIHJLKMNOPQRSiTjUkNone VWXYZlmnopq"vars that can unify with anything .alpha equivalences, wherever there is binding > note: we depend on behavior of lookup here, so new entries < should always be added to the front of the list so  we don'6t have to explicity remove them when shadowing occurs pattern we are matching on expression we are checking +mapping of vars to expressions, or failure VWXYZVYZWX VWXYZlmnopqNone[IExternals that reflect GHC functions, or are derived from GHC functions. ]7Compare the core fragments at the end of the specified s. ^?Compare the definitions of two identifiers for alpha-equality. rICompare the definitions of the two named identifiers for alpha-equality. [\stuvwx]^r[\]^[\]^ [\stuvwx]^rNone_s for individual 5s. ____None`+Language constructs that can be zoomed to. n*s involving navigating to named entities. o&Discard the last crumb of a non-empty . p'Find the path to the RHS of a binding. q2Find the path to the binding group of a variable. r,Find the path to the binding of a variable. s@Find the path to the first occurrence occurrence of a variable. tFind all possible targets of s. uFind all possible targets of r. vFind all possible targets of q. wFind all possible targets of p. xhLookup table for constructs that can be considered; the keys are the arguments the user can give to the "consider" command. y/Find the path to the first matching construct. zAConstruct a path to the (n-1)th argument in a nested sequence of  s. -`abcdefghijklmnopqrsyz{|}~tuvwxyz`abcdefghijklmnopqrstuvwxyznsrqpotuvw`mlkjihgfedcbaxyz ` mlkjihgfedcbanopqrsyz{|}~tuvwxyzNone{;- This list contains reflections of the KURE strategies as s. KTest if a rewrite would succeed, producing a string describing the result. {{{{None}Parse a  to a  [, using the current context. }|}~|}~|}~X!|}~NoneITest if the current expression is an identifier matching the given name. prog ==> v (v = e) prog body ==> let v = e in body NoneYGiven two expressions, and a rewrite from the former to the latter, verify that rewrite. YGiven two expressions, and a rewrite from the former to the latter, verify that rewrite. PGiven f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y and g (f x) ==> x. >Given f :: X -> Y and g :: Y -> X, verify that f (g y) ==> y. PGiven f :: X -> Y and g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y. Given  f :: X -> Y and  g :: Y -> X, and a proof that f (g y) ==> y, then f (g y)  == y. None7Check if the current expression is an undefined value. 7Check if the current expression is an undefined value. !error ty string ==> undefined ty +Make an undefined value of the given type. Set the current expression to  . undefinedExprR = undefinedAppR <+ undefinedLamR <+ undefinedLetR <+ undefinedCastR <+ undefinedTickR <+ undefinedCaseR (undefined ty1) e ==>  undefined ty2 ( v -> undefined ty1) ==>  undefined ty2 (where v is not a ) +let bds in (undefined ty) ==> undefined ty *Cast (undefined ty1) co ==> undefined ty2 ,Tick tick (undefined ty1) ==> undefined ty1 )undefinedCaseR = undefinedCaseScrutineeR <+ undefinedCaseAltsR -case (undefined ty) of alts ==> undefined ty icase e of {pat_1 -> undefined ty ; pat_2 -> undefined ty ; ... ; pat_n -> undefined ty} ==> undefined ty YVerify that the given rewrite is a proof that the given expression is a strict function.         None)Externals for manipulating fixed points. f = e ==>  f = fix (\ f -> e) fix ty f <==>  f (fix ty f)  fix tyA (\ a -> f (g a)) <==>  f (fix tyB (\ b -> g (f b)) If f is strict, then (f (g a) == h (f a)) ==> ( f (fix g) == fix h) If f is strict, then (f (g a) == h (f a) ) ==> ( f (fix g) == fix h) 'Check that the expression has the form fix t (f :: t -> t) , returning t and f. f ==> fix f  NoneNone+Externals for manipulating binding groups.   v e ==>   [(v,e)]   [(v,e)] ==>   v e None(Externals relating to Case expressions. ;case s of w; C vs -> e ==> e if w and vs are not free in e N(case s of alt1 -> e1; alt2 -> e2) v ==> case s of alt1 -> e1 v; alt2 -> e2 v $f (case s of alt1 -> e1; alt2 -> e2) ==> $case s of alt1 -> f e1; alt2 -> f e2  Only safe if f is strict. Kcase (case s1 of alt11 -> e11; alt12 -> e12) of alt21 -> e21; alt22 -> e22  ==>  case s1 of 5 alt11 -> case e11 of alt21 -> e21; alt22 -> e22 5 alt12 -> case e12 of alt21 -> e21; alt22 -> e22 Hlet v = case s of alt1 -> e1 in e ==> case s of alt1 -> let v = e1 in e 8cast (case s of p -> e) co ==> case s of p -> cast e co caseFloatR = caseFloatAppR <+ caseFloatCaseR <+ caseFloatLetR <+ caseFloatCastR ' Note: does NOT include caseFloatArg %Unfloat a Case whatever the context. Unimplemented! UInline the case scrutinee (if it is an identifier), and then perform case reduction. Case of Known Constructor. I Eliminate a case if the scrutinee is a data constructor or a literal. Case of Known Constructor. 3 Eliminate a case if the scrutinee is a literal.  NB: LitAlt cases don't do evaluation Case of Known Constructor. < Eliminate a case if the scrutinee is a data constructor. /Case split a free identifier in an expression: /E.g. Assume expression e which mentions i :: [a] e ==> case i of i  [] -> e  (a:as) -> e 9Force evaluation of an identifier by introducing a case.  This is equivalent to adding (seq v) in the source code. e -> case v of v  _ -> e FLike caseSplit, but additionally inlines the constructor applications + for each occurance of the named variable. > caseSplitInline nm = caseSplit nm >>> anybuR (inlineName nm) [Inline the case wildcard binder as the case scrutinee everywhere in the case alternatives. eInline the case wildcard binder as the case-alternative pattern everywhere in the case alternatives. 8Merge all case alternatives into a single default case. 1 The RHS of each alternative must be the same.  3case s of {pat1 -> e ; pat2 -> e ; ... ; patn -> e} ==> case s of {_ -> e} `In the case alternatives, fold any occurrences of the case alt patterns to the wildcard binder. A cleverer version of  mergeCaseAltsk that first attempts to abstract out any occurrences of the alternative pattern using the wildcard binder. PEliminate a case, inlining any occurrences of the case binder as the scrutinee. Eliminate a case, merging the case alternatives into a single default alternative and inlining the case binder as the scrutinee (if possible). 1Eliminate a case that corresponds to a pointless . OWill forcing the expression to WHNF always force one of the given identifiers? GMaybe the function to float past, and maybe a proof of its strictness. None(Externals relating to Case expressions. NoneExternals relating to   expressions. (let x = e1 in e2) ==> (e2[e1/x]), (x must not be free in e1) As \, but attempting to convert a singleton recursive binding to a non-recursive binding first. Let (NonRec v e) body ==> body[e/v] uCurrently we always substitute types and coercions, and use a heuristic to decide whether to substitute expressions.  This may need revisiting. e ==> (let v = e in v), name of v is provided ,Remove an unused non-recursive let binding.  let v = E1 in E2 ==> E2, if v is not free in E2 ?Remove all unused recursive let bindings in the current group. let v = ev in e ==> case ev of v -> e (let v = ev in e) x ==> let v = ev in e x f (let v = ev in e) ==> let v = ev in f e let v = (let bds in e1) in e2 ==> let bds in let v = e1 in e2 ( v -> let binds in e2) ==> let binds in (  v1 -> e2)  Fails if v occurs in the RHS of binds.  If v is shadowed in binds, then v will be alpha-renamed. !case (let bnds in e) of wild alts ==> !let bnds in (case e of wild alts) # Fails if any variables bound in bnds occurs in alts. cast (let bnds in e) co ==> let bnds in cast e co Float a  . through an expression, whatever the context. v (  v (  bds e)) p ==> v bds (v (  v e) p)  Unfloat a   if possible. let v = ev in case s of p -> e ==> .case (let v = ev in s) of p -> let v = ev in e,  if v% does not shadow a pattern binder in p let v = ev in f a ==> #(let v = ev in f) (let v = ev in a) let v = ev in  x -> e ==> x -> let v = ev in e  if v does not shadow x :Re-order a sequence of nested non-recursive let bindings. S The argument list should contain the let-bound variables, in the desired order. 8Combine nested non-recursive lets into case of a tuple. ^ E.g. let {v1 = e1 ; v2 = e2 ; v3 = e3} in body ==> case (e1,e2,e3) of {(v1,v2,v3) -> body}  None .Externals for local structural manipulations. - (Many taken from Chapter 3 of Andre Santos' dissertation.) ((\ v -> e1) e2) ==> (let v = e2 in e1) = This form of beta-reduction is safe if e2 is an arbitrary  expression (won't duplicate work). %Perform one or more beta-reductions. (let v = e1 in e2) ==> (\ v -> e2) e1 (\ v -> f v) ==> f e1 ==> (\ v -> e1 v) !Perform multiple eta-expansions. \Flatten all the top-level binding groups in the module to a single recursive binding group. pFlatten all the top-level binding groups in a program to a program containing a single recursive binding group. [Flatten all the top-level binding groups in a program to a single recursive binding group. )Abstract over a variable using a lambda.  e ==> ( x. e) x 2Push a function through a Case or Let expression. ) Unsafe if the function is not strict. Pa proof that the function (after being applied to its type arguments) is strict %a predicate to identify the function Pa proof that the function (after being applied to its type arguments) is strict %a predicate to identify the function A !None #Do you show fully qualified names? *Do you hide types, and type arguments, as  ? Do you hide coercions? (Do you give the types for all bindings? 9This region should be highlighted (is the current focus)  .below this depth are ..., Nothing => infinite  notes might be added to output  "Context for PrettyH translations. 47like vcat and hcat, only make the list syntax explicit 57like vcat and hcat, only make the list syntax explicit Use css to do the colors  -  - >  styletype="text/css"  - > .hermit-syntax {  - > color: red;  - >  /style pAttr just popped, if any  Attr stack  !"#     $%& !"#$'%&'()*+,-./01()23*+45,-./0123456789:;<=>N      !"#$%&'()*+,-./012345N$%(&)*'+32, .-!"#     0/154< !"#       $&% !"#$'%&'()*+,-./01()23*+45,-./0123456789:;<=>"None7)cleanupUnfoldR cleans a unfold operation / (for example, an inline or rule application) + It is used at the level of the top-redex. , Invariant: will not introduce let bindings 8A more powerful inline. Matches two cases:  Var ==> inlines E App ==> inlines the head of the function call for the app tree >+Stash a binding with a name for later use. ( Allows us to look at past definitions. ?+Stash a binding with a name for later use. ( Allows us to look at past definitions. . rememberR :: String -> Translate c m Core () " rememberR label = contextfreeT $  core ->  case core of * DefCore def -> saveDef label def : BindCore (NonRec i e) -> saveDef label (Def i e)  _ -> fail remember: not a binding QApply a stashed definition (like inline, but looks in stash instead of context). 6789:;<=>?@ 6789:;<=>?@ 67>@89:;<?= 6789:;<=>?@#NoneBFUnfold the current expression if it is one of the basic combinators: (?), (@), A, B, C, D or E. S This is intended to be used as a component of simplification traversals such as C or D. AFBCDEFGGHABCDEFGABCGDEF AFBCDEFGGH$NoneHIJKLMNHIJKLMNJMLKHINHIJMLKN%NoneO;Externals for manipulating fixed points, and for the worker/wrapper transformation. PFor any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then  fix A f <==>  wrap (fix B (\ b -> unwrap (f (wrap b)))) IFor any  f :: A -> A , and given wrap :: B -> A and unwrap :: A -> B as arguments, then  fix A f <==>  wrap (fix B (\ b -> unwrap (f (wrap b)))) QGiven wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then  unwrap (wrap work) <==> work JGiven wrap :: B -> A, unwrap :: A -> B and  work :: B as arguments, then  unwrap (wrap work) <==> work RXSave the recursive definition of work in the stash, so that we can later verify uses of Q. 0 Must be applied to a definition of the form: work = unwrap (f (wrap work)) 8 Note that this is performed automatically as part of S. S\ wrap unwrap -> ( prog = expr ==> prog = let f = \@ prog -> expr in let work = unwrap (f (wrap work)) in wrap work) K\ wrap unwrap -> ( prog = expr ==> prog = let f = \@ prog -> expr in let work = unwrap (f (wrap work)) in wrap work) TAs K5 but performs the static-argument transformation for n static arguments first, and optionally provides some of those arguments (specified by index) to all calls of wrap and unwrap. S This is useful if, for example, the expression, and wrap and unwrap, all have a forall type. LDConvert a proof of WW Assumption A into a proof of WW Assumption B. MDConvert a proof of WW Assumption B into a proof of WW Assumption C. NDConvert a proof of WW Assumption A into a proof of WW Assumption C. Uwrap (unwrap a) <==> a Owrap (unwrap a) <==> a Vwrap (unwrap (f a)) <==> f a Pwrap (unwrap (f a)) <==> f a Wfix A ( a -> wrap (unwrap (f a))) <==> fix A f Qfix A ( a -> wrap (unwrap (f a))) <==> fix A f OPIQJRSKTLMNUWW Assumption A wrap unwrap OWW Assumption A wrap unwrap VWW Assumption B wrap unwrap f PWW Assumption B wrap unwrap f WWW Assumption C wrap unwrap f QWW Assumption C wrap unwrap f Rwrap unwrap f Swrap unwrap WW Assumption A Twrap unwrap f WW Assumption B Uwrap unwrap f WW Assumption C V OPQRSTUVW OPSTRQUVWOPIQJRSKTLMNUOVPWQRSTUV&NoneX;Externals for manipulating fixed points, and for the worker/wrapper transformation. YFor any f :: (X -> A) -> (X -> A) , and given  abs :: B -> A and  rep :: A -> B as arguments, then  fix A f <==> \ x1 -> abs (fix (X->B) (\ h x2 -> rep (f (\ x3 -> abs (h x3)) x2)) x1) WFor any f :: (X -> A) -> (X -> A) , and given  abs :: B -> A and  rep :: A -> B as arguments, then  fix A f <==> \ x1 -> abs (fix (X->B) (\ h x2 -> rep (f (\ x3 -> abs (h x3)) x2)) x1) ZGiven  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then  rep (abs (work x)) <==> work x XGiven  abs :: B -> A,  rep :: A -> B and work :: X -> B as arguments, then  rep (abs (work x)) <==> work x [XSave the recursive definition of work in the stash, so that we can later verify uses of Z. 0 Must be applied to a definition of the form: work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1) 8 Note that this is performed automatically as part of \. \\ abs rep -> ( prog = expr ==> prog = let f = \ prog -> expr in let work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1) in \ x0 -> abs (work x0)) Y\ abs rep -> ( prog = expr ==> prog = let f = \ prog -> expr in let work = \ x1 -> rep (f (\ x2 -> abs (work x2)) x1) in \ x0 -> abs (work x0)) ]As Y5 but performs the static-argument transformation for n{ static arguments first, and optionally provides some of those arguments (specified by index) to all calls of abs and rep. O This is useful if, for example, the expression, and abs and rep, all have a forall type. ZDConvert a proof of WW Assumption A into a proof of WW Assumption B. [DConvert a proof of WW Assumption B into a proof of WW Assumption C. \DConvert a proof of WW Assumption A into a proof of WW Assumption C. ^ abs (rep a) <==> a ] abs (rep a) <==> a _abs (rep (f h x)) <==> f h x ^abs (rep (f h x)) <==> f h x ` fix (X->A) ( h x -> abs (rep (f h x))) <==>  fix (X->A) f _ fix (X->A) ( h x -> abs (rep (f h x))) <==>  fix (X->A) f XYWZX[\Y]Z[\^WW Assumption A abs rep ]WW Assumption A abs rep _WW Assumption B abs rep f ^WW Assumption B abs rep f `WW Assumption C abs rep f _WW Assumption C abs rep f `abs rep f aabs rep WW Assumption A babs rep f WW Assumption B cabs rep f WW Assumption C d XYZ[\]^_` XY\][Z^_`XYWZX[\Y]Z[\^]_^`_`abcd'Nonea List of all s provided by HERMIT. a!"#$&'()*+,-./012345789:;<=>?@ABCDEFGHIJKLNOPQRSTUWXYZ\]^`abcdefghijklmopqrstuvwxyz789:;<=>?@BCDEFGPQRSTUVWYZ[\]^_`aaa(NonebAn b a is a possible means of converting a . value to a value of type a. c Interpret an  by looking up the appropriate /(s) in the provided , then interpreting the /(s) with the provided bWs, returning the first interpretation to succeed (or an error string if none succeed). d!The primitive way of building an b. becfdghijklbcdbdc becfdghijkl)None eA handle for a specific version of the . m Currently es are identified by an t label. fA f1 is a repository for complete Core syntax trees ().  For now, operations on a f are sequential, but later # it will be possible to have two is running in parallel. g Halt the f9 and return control to GHC, which compiles the specified e. h Halt the f" and abort GHC without compiling. iApply a  to the specified e& and return a handle to the resulting e. jApply a   to the e! and return the resulting value. k,Delete the internal record of the specified e. l List all the es tracked by the f. mIStart a HERMIT client by providing an IO function that takes the initial f and inital e handle.  The Modguts to  Modguts'/ function required by GHC Plugins is returned. * The callback is only ever called once. nopqemfrghijklmst efghijklmefghijklmghijklnoqpemfrghijklmstNone nA handle for an e$ combined with scoping information. p5An alternative HERMIT kernel, that provides scoping. ~KA primitive means of denoting navigation of a tree (within a local scope). Top Up Right Left *Movement confined within the local scope. utEnsures that the TMVar is replaced when an error is thrown, and all exceptions are lifted into MonadCatch failures. IStart a HERMIT client by providing an IO function that takes the initial p and inital n handle.  The Modguts to  Modguts'/ function required by GHC Plugins is returned. vnopqrstuvwxyz{|}~wxyzunopqrstuvwxyz{|}~~pqrstuvwxyz{|}no vnop qrstuvwxyz{|}~wxyzu*NoneGiven a list of ms, produce the  to & function required to build a plugin. CBuild a hermit plugin. This mainly handles the per-module options. {=Determine whether to act on this module, choose plugin pass. E NB: we have the ability to stick module info in the phase info here |LFilter options to those pertaining to this module, stripping module prefix. !{|{|+None0Pretty print a fragment of GHC Core using HERMIT's "Clean" pretty printer. A}~9}~,Nonethe current AST which pretty printer to use #the options for the pretty printer #the way of outputing to the screen console height, in lines keyboard input the nav panel if running a script the list of ticked messages 4if true, run Core Lint on module after each rewrite  if true, abort on *any* failure Epath to beginning of window, always a prefix of focus path in kernel " these four should be in a reader =KernelEffects are things that affect the state of the Kernel ; - Apply a rewrite (giving a whole new lower-level AST). 8 - Change the current location using a computed path. 3 - Change the currect location using directions.  - Begin or end a scope.  - Delete an AST ? - Run a precondition or other predicate that must not fail. "There are four types of commands. CCommand that otherwise controls HERMIT (abort, resume, save, etc). ;Command that queries the AST with a Translate (read only). .Command that modifies the state of the shell. 8Command that modifies the state of the (scoped) kernel. BA composite meta-command for running a loaded script immediately. 6 The script is given the same name as the filepath. 4Our own custom instance of Monad for CLM m so we don't have to depend on 2 newtype deriving to do the right thing for fail. YQQ -NoneInsert a script into the . .None    /None0Pretty print a fragment of GHC Core using HERMIT's "AST" pretty printer. D This displays the tree of constructors using nested indentation.                      0None/This pretty printer is just a reflection of GHC's standard pretty printer.  1None#Create a dictionary from a list of s. "The pretty-printing dictionaries. 2NoneIInterpret a boxed thing as one of the four possible shell command types.  !"  !"  !"  !"3None%5The first argument includes a list of files to load. &#$%&'()*+,- #$%&'()*+,- %,-')(*+#$&#$%&'()*+,-4None*Run a kernel function on the current SAST ?Run a kernel function on the current SAST and update cl_cursor ./0123456789:;<=./0123456789:;<=/321;<=456789:.0./0123456789:;<=5None>>>>>?@>?A>?B>?C>?D>?E>?F>?G>?H>IJ>KL>MN>OP>OQ>RS>TU>TV>TT>TT>?W>XY>XZ>X[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>??@ABCDEFGHIJKLMN O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                                        ! " 7 # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = ; > ? @ A B C D E F G H I J K L M N J O P Q RJSTUVWXYZ[\]^_`abJcdefghijklmnopqrstuvwxJyz{|}~JJJJJJJJJJJJJ J           !!!!! ! ! ! ! ! ! !!!!!!!!!!!!O!!!!!!!!! !!!"!#!$!%!&!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!7!8!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K"J"L"M"N"O"P"Q"R"S"T"U#J#V#W#X#Y#Z#[$\$\$]$^$_$`$a%J%b%c%d%e%f%g%h%i&J&j&k&l&m&n&o&p&q'J(r(s(t)u)v)w)x)y)z){)|)}~~*******************************++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-........ . ////////000000001 1 2 2222222223333333333 3!4"4#4$4%4&4'4(4)4*4+4,4-4.4/40415263646566676869:;<=>?@@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8888:9999999999999>>>>>>>>>     /::::::: !>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>i>j>k>>>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>G>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> > >!>">#>$>$>%>&>'>(>)>*>+>,>->->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>V>W>X>Y>Z>[>\>]>^>_>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >  >  >  > > > > > > > > > > > > > > >>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>S>T>UV>UW>UX>UY>UZ>U[>U\>U]>U^>U_>U`>Ua>Ub>Uc>Ud>Ue>Uf>Ug>Uh>Ui>Uj>Uk>Ul>Um>Un>Uo>pq>pr>ps>pt>pu>pv>pw>px>py>pz>p{>p|>p}>p~>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[\>[]>[^>[_>[`>[a>[b>[c>[d>[e>[f>[g>[h>[i>[j>[k>[l>[m>[n>[o>[p>[q>[r>[s>[t>[u>[v>[w>[x>[y>[z>[{>[|>[}>[~>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>G>W>>>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > !> "> #> $> %> &> '> (> )> *> +> ,> -> .> /> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> :> ;> <> => >> ?> @> A> B> C> D> E> F> G> H> I> J> K> L> M> N> O> P> Q> R> S> T> U> V> W> X> Y> Z> [> \> ]> ^> _> `> a> b c> b d> b e> b f> b g> b h> b i> b j> b k> b l> b m> b n> b o> b p> b q> b r> b s> b t> b u> b v> b w> b x> b y> b z> b {> b |> b }> b ~> b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > b > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > !> "> #> $> %> &> '> (> )> *> +> ,> -> .> /> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> :> ;> <> => >> ?>  @>  A>  B>  C>  D>  E>  F>  G>  H>  I>  J>  K>  L>  M>  N>  O>  P>  Q>  R>  S>  T>  U>  V>  W>  X>  Y>  Z>  [>  \>  ]>  ^>  _>  `>  a>  b>  c>  d>  e>  f>  g>  h>  i>  j>  k>  l>  m>  n>  o>  p>  q>  r>  s>  t>  u>  v>  w>  x>  y>  z>  {>  |>  }>  ~>  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  > :>  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  !>  ">  #>  $>  %>  &>  '>  (>  )>  *>  +>  ,>  ->  .>  />  0>  1>  2>  3>  4>  5>  6>  7>  8>  9>  :>  ;>  <>  =>  >>  ?>  @>  A>  B>  C>  D>  E>  F>  G>  H>  I>  J>  K>  L>  M>  N>  O>  P>  Q>  R>  S>  T>  U>  V>  W>  X>  Y>  Z>  [>  \> ]> ^> _> `> a> b> c> d> e> f> g> h> i> j> k> l> m> n> o> p> q> r> s> t> u> v> w> x> y> z> {> |> }> ~> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  > >  > >  >  >  >  >  >  >  > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  >  > > > > > > > > > > !> "> #> $> %> &> '> (> )> *> +> ,> -> .> /> 0> 1> 2> 3> 4> 5> 6> 7> 8> 9> :> ;> <> => >> ?> @> A> B> C> D> E> F> G> H>>W I>W J>W K>W L>W M>W N>W O>W P>W Q>W R>W S>W T>W U>W V>W W>W X>W Y>W Z>W [>W \>W ]>W ^>W _>W `>W a>W b>W c>W d>W e>W f>W g>W h>W i>W j>W k>W l>W m>W n>W o>W p>W q>W r>W s>W t>W u>W v>W w>W x>W y>W z>W {>W |>W }>W ~>W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >W >R >R >R >R >R >R >R >R >R >R >R >R >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? >? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > !> "> #> $> %> &> '> (> )> *> +> ,> -> .> /> 0> 1> 2> 3> 4> 5> 6> 7>  8>  9>  :>  >  ;>  <>  => > ?> > @> > A> > B> > C> > D> > E> > F> > G> > H> > H> > I> > J> > K> > L> > M> N O> N P> N Q> N R> N S> N N> T U> T V> T W> T X> T Y> T Z> T [> T \> T ]> T ^> T _> T `> T a> T b> T c> T d> T e> T f> T g> T h> T i> T j> T k> T l> T m> T n> T o> T p> T q> T r> T s> T t> T u> T v> T w> T x> T y> T z> T {> T |> T }> T ~> T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > T > > > > > >  > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  >  >  >  >  > > >  > > > > > > > > > > > > > > > > >  > !> "> #> $> %> %> &> '> (> )> *> b+> b,> b b>-.>-/>-0>-1>-2>-3>-4>-5>-6>-7>-8>-9>-:>-;>-<>-=>->>-?>-@>-A>-B>-C>-D>-E>-F>-G>-H>-I>-J>-K>-L>-M>-N>-O>-->-P>-Q>-R>-S>-T>U>V> TW> TX> TY> TZ> T[> T T>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>Wz>W{>W|>W}>W~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[>[>[>[[>[>>>>>>>>>>>>>>>>>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>G>I>J>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?>?>?O>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > >>>>>>>>>>>>>>>>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>>\>]>^>_>`>a>b>c> d> e> f> g>  >h>ij>ik>il>im>in>io>ip>iq>ir>is>it>iu>iv>iw>ix>iy>iz>i{>i|>i}>i~>i>i>i>i>i>i>i>i>i>i>i>i>i>ii>ii>i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>X>X>X>X>X>>>>>>>>>>>>>>>>>>Un>>>>>>>>> > > > > >>>>>>>>>>>>_` !"#$%&'()*+,-./0123456789:;<=>?@>ABCDEFGHIJKL M N O P Q R S_TU_TV_TW_TX_TY_TZ_T[_T\_T]_T^__`__a__b__c__d__e__f__g__h__i__j__k__l__m__n__o__p__q__r__s__t__u__v__w__x__y__z__{__|__}__~___________________________________________`_`_`_`_`_`_`_`_`_`_`_`__________________________________________________________________________________________ _ _ _ _  :: #     (          ! " # $ % & ' ( ) * + , - . /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno>?@@ABCpqrstuvwxyz{|}~PQQRSTUVWXYZ[\]bcdefghijklmnopqrstuvwxyz{|}~:  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:;:;:;:;:;::###%%%%%%%%%%%%%%&&&&&&&&&&&&&&(r((((((()u)))))v))**+++++++++++++++ + + + + ++++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2,3,4,5,6,7,8,9,:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-R.J.K.L///"/*/#0"0*1M1N1O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j4k4l4"4m494n4o4p4?4q4r4s4t4u4vwhermit-0.3.0.0 HERMIT.GHCHERMIT.Kernel.Scoped HERMIT.Parser HERMIT.Driver HERMIT.CoreHERMIT.ContextHERMIT.Kure.SumTypes HERMIT.Monad HERMIT.KureHERMIT.Dictionary.CommonHERMIT.ExternalHERMIT.Dictionary.DebugHERMIT.Dictionary.FunctionHERMIT.Dictionary.GHC!HERMIT.Dictionary.AlphaConversionHERMIT.Dictionary.InlineHERMIT.Dictionary.FoldHERMIT.Dictionary.Query#HERMIT.Dictionary.Navigation.CrumbsHERMIT.Dictionary.NavigationHERMIT.Dictionary.KureHERMIT.ParserCoreHERMIT.Dictionary.NewHERMIT.Dictionary.ReasoningHERMIT.Dictionary.UndefinedHERMIT.Dictionary.FixPointHERMIT.Dictionary.UnsafeHERMIT.Dictionary.Local.BindHERMIT.Dictionary.Local.CaseHERMIT.Dictionary.Local.CastHERMIT.Dictionary.Local.LetHERMIT.Dictionary.LocalHERMIT.PrettyPrinter.CommonHERMIT.Dictionary.UnfoldHERMIT.Dictionary.Composite&HERMIT.Dictionary.WorkerWrapper.Common#HERMIT.Dictionary.WorkerWrapper.Fix)HERMIT.Dictionary.WorkerWrapper.FixResultHERMIT.Dictionary HERMIT.Interp HERMIT.Kernel HERMIT.PluginHERMIT.PrettyPrinter.CleanHERMIT.Shell.TypesHERMIT.Shell.ScriptToRewriteHERMIT.Shell.RendererHERMIT.PrettyPrinter.ASTHERMIT.PrettyPrinter.GHCHERMIT.Shell.DictionaryHERMIT.Shell.ExternalsHERMIT.Shell.CommandHERMIT.OptimizeHERMIT HERMIT.Syntax DictionaryHERMIT.Utilities Paths_hermitLanguageKUREDataMap ghc-7.6.2TypeRepNumTyLitStrTyLitTyLitTyVarTyAppTyTyConAppFunTyForAllTyLitTy CoreArity exprArityConvertthRdrNameGuesses OccurAnaloccurAnalyseExprKindisKindisLiftedTypeKindConTysPrim alphaTyVarsPairpSndpFstTypePanicthrowGhcException ProgramError GhcExceptiontransformers-0.3.0.0Control.Monad.IO.ClassliftIO kure-2.14.0Language.KURE.Path LocalPathScriptExprHListHCoreHAppHCmdNameSrcName parseScript unparseScript unparseExprHhermit_versionghcFlagsvarSetToStrings showVarSetuqNamefqName var2String name2THName var2THNamecmpString2Name cmpString2VarcmpTHName2Name cmpTHName2VarfindNamesFromStringfindNamesFromTHppIdInfo zapVarOccInfo notElemVarSetCrumbLRCo_CoLRCo_LR InstCo_Type InstCo_CoNthCo_Co NthCo_Int TransCo_Right TransCo_LeftSymCo_CoUnsafeCo_Right UnsafeCo_LeftAxiomInstCo_ArgAxiomInstCo_IndexAxiomInstCo_Axiom CoVarCo_CoVar ForAllCo_BodyForAllCo_TyVar AppCo_Arg AppCo_FunTyConAppCo_ArgTyConAppCo_TyCon Refl_Type ForAllTy_Body ForAllTy_Var FunTy_CoDom FunTy_Dom TyConApp_ArgTyConApp_TyCon AppTy_Arg AppTy_Fun LitTy_TyLit TyVarTy_TyVarAlt_RHSAlt_VarAlt_ConCo_Co Type_Type Tick_Expr Tick_TickCast_Co Cast_ExprCase_Alt Case_Type Case_BinderCase_ScrutineeLet_BodyLet_BindLam_BodyLam_VarApp_ArgApp_FunLit_LitVar_IdDef_RHSDef_IdRec_Def NonRec_Var NonRec_RHS ProgCons_Tail ProgCons_Head ModGuts_ProgCoreDefDefCoreProgProgConsProgNil CoreTickish progToBinds bindsToProgbindToVarExprs defToIdExpr defsToRecBind progSyntaxEq bindSyntaxEq defSyntaxEq exprSyntaxEq altSyntaxEq typeSyntaxEqcoercionSyntaxEq progAlphaEq bindAlphaEq defAlphaEq exprAlphaEq altAlphaEq typeAlphaEqcoercionAlphaEqprogIdsbindVarsdefIdaltVars freeVarsExpr freeIdsExprlocalFreeVarsExprlocalFreeIdsExpr freeVarsBind freeVarsDef freeVarsAlt freeVarsProg freeVarsTypefreeVarsCoercionexprKindOrType exprTypeMisCoArgappCountmapAlts endoFunType splitFunTypeMfunArgResTypesfunsWithInverseTypes showCrumbsdeprecatedLeftSiblingdeprecatedRightSiblingHermitC LocalPathH AbsolutePathHHasGlobalRdrEnvhermitGlobalRdrEnv HasCoreRuleshermitCoreRules ReadBindings hermitDepthhermitBindings BoundVars boundVars AddBindingsaddHermitBindings HermitBindingHermitBindingSiteFORALLCASEWILDCASEALTSELFRECRECNONRECLAM BindingDepthhermitBindingSiteExprhermitBindingExpraddBindingGroup addDefBindingaddDefBindingsExceptaddCaseWildBindingaddLambdaBindingaddAltBindingsaddForallBinding findBoundVarsboundInlookupHermitBindinglookupHermitBindingDepthlookupHermitBindingSite initHermitCCoreTCTyCoCore CoercionCoreTypeCoreAltCoreExprCoreDefCoreBindCoreProgCoreGutsCore coreAlphaEq tyCoAlphaEq coreTCAlphaEq coreSyntaxEq tyCoSyntaxEqcoreTCSyntaxEq freeVarsCore freeVarsTyCofreeVarsCoreTCpromoteModGutsT promoteProgT promoteBindT promoteDefT promoteAltT promoteExprT promoteTypeTpromoteCoercionTpromoteModGutsR promoteProgR promoteBindR promoteDefR promoteAltR promoteExprR promoteTypeRpromoteCoercionRpromoteExprBiR DebugMessage DebugCore DebugTickHermitM HermitMEnv hs_debugChanDefStashLabelrunHMgetStashsendDebugMessagesaveDef lookupDef liftCoreM newGlobalIdHnewIdH newTyVarH newCoVarH cloneVarH mkHermitMEnvPathHLensH BiRewriteHRewriteH TranslateHmodGutsTmodGutsRprogNilT progConsT progConsAllR progConsAnyR progConsOneRnonRecT nonRecAllR nonRecAnyR nonRecOneRrecTrecAllRrecAnyRrecOneRdefTdefAllRdefAnyRdefOneRaltTaltAllRaltAnyRaltOneRvarTvarRlitTlitRappTappAllRappAnyRappOneRlamTlamAllRlamAnyRlamOneRletTletAllRletAnyRletOneRcaseTcaseAllRcaseAnyRcaseOneRcastTcastAllRcastAnyRcastOneRtickTtickAllRtickAnyRtickOneRtypeTtypeR coercionT coercionR defOrNonRecTdefOrNonRecAllRdefOrNonRecAnyRdefOrNonRecOneRrecDefT recDefAllR recDefAnyR recDefOneR consNonRecTconsNonRecAllRconsNonRecAnyRconsNonRecOneRconsRecT consRecAllR consRecAnyR consRecOneR consRecDefTconsRecDefAllRconsRecDefAnyRconsRecDefOneR letNonRecT letNonRecAllR letNonRecAnyR letNonRecOneRletRecT letRecAllR letRecAnyR letRecOneR letRecDefT letRecDefAllR letRecDefAnyR letRecDefOneRcaseAltT caseAltAllR caseAltAnyR caseAltOneRtyVarTtyVarRlitTyTlitTyRappTyT appTyAllR appTyAnyR appTyOneRfunTyT funTyAllR funTyAnyR funTyOneR forAllTyT forAllTyAllR forAllTyAnyR forAllTyOneR tyConAppT tyConAppAllR tyConAppAnyR tyConAppOneRreflTreflR tyConAppCoTtyConAppCoAllRtyConAppCoAnyRtyConAppCoOneRappCoT appCoAllR appCoAnyR appCoOneR forAllCoT forAllCoAllR forAllCoAnyR forAllCoOneRcoVarCoTcoVarCoR axiomInstCoTaxiomInstCoAllRaxiomInstCoAnyRaxiomInstCoOneR unsafeCoT unsafeCoAllR unsafeCoAnyR unsafeCoOneRsymCoTsymCoRtransCoT transCoAllR transCoAnyR transCoOneRnthCoT nthCoAllR nthCoAnyR nthCoOneRinstCoT instCoAllR instCoAnyR instCoOneRdeprecatedIntToCrumbTdeprecatedIntToPathTapplyInContextTcallT callPredT callNameTcallSaturatedT callNameG callDataConTcallDataConNameTcallsRcallsT progConsIdsTprogConsRecIdsTprogConsNonRecIdT nonRecVarTrecIdsTlamVarTletVarsT letRecIdsT letNonRecVarT caseVarsT caseWildIdT caseAltVarsTvarBindingDepthTvarIsOccurrenceOfTexprIsOccurrenceOfT boundVarsT findBoundVarTfindIdTfindId wrongExprFormRewriteCoreListBox IntListBox StringListBox NameListBox StringBoxCoreBox CoreString unCoreStringTranslateCoreTCPathBoxTranslateCorePathBoxPathBoxCrumbBoxNameBoxTranslateCoreCheckBoxTranslateCoreTCCheckBoxTranslateCoreStringBoxTranslateCoreTCStringBoxBiRewriteCoreBoxRewriteCoreTCBoxRewriteCoreBoxIntBoxTagBoxExternBoxboxunboxExternal externName externDyn externHelp externTagsTag.+remTagtagMatchTagECmdTag Deprecated ExperimentTODOUnsafeContextVersionControlDebug PreConditionCommute Introduce PredicateQuery NavigationShallowDeepLoopEvalShell ExternalHelp ExternalNamedictionaryOfTags.&.||notTexternalmatchingExternals toDictionarytoHelp externalsobserveFailureRobserveRtraceRbracketR staticArgRstaticArgTypesR staticArgPosRstaticArgPredRsubstR substExprRinScoperulerulesarityOf lintModuleT lintExprT specConstrRanyCallR dynFlagsT dezombifyR occurAnalyseRoccurAnalyseExprChangedRoccurAnalyseChangedRoccurAnalyseAndDezombifyR visibleVarsT freshNameGenTfreshNameGenAvoiding unshadowR replaceVarR alphaLamRalphaCaseBinderR alphaAltWithR alphaAltVarsR alphaAltR alphaCaseR alphaLetWithR alphaLetVarsR alphaLetRalphaProgConsWithRalphaR InlineConfig AllBindersCaseBinderOnlyCaseBinderInlineOption Alternative Scrutinee inlineNameR inlineNamesRinlineRinlineCaseScrutineeRinlineCaseAlternativeRconfigurableInlineR getUnfoldingTinlineTargetsT stashFoldR stashFoldAnyRfoldRfoldVarRinfoTcompareCoreAtTcompareBoundIdsTcrumbExternals Considerable CoercionExprTypeExprTickyCastyCaseOfLetExprLambda ApplicationLiteralVariableCaseAlt DefinitionBinding parentOfTrhsOfTbindingGroupOfT bindingOfT occurrenceOfToccurrenceOfTargetsTbindingOfTargetsTbindingGroupOfTargetsT rhsOfTargetsT considerablesconsiderConstructT nthArgPath parseCoreparseCoreExprTparse2beforeBiRparse3beforeBiRisVarprogNonRecIntroRletNonRecIntroRverifyEqualityLeftToRightTverifyEqualityCommonTargetTverifyIsomorphismTverifyRetractionT retractionBRisUndefinedValTerrorToUndefinedRmkUndefinedValTreplaceWithUndefinedRundefinedExprR undefinedAppR undefinedLamR undefinedLetRundefinedCastRundefinedTickRundefinedCaseRundefinedCaseScrutineeRundefinedCaseAltsR verifyStrictT fixIntroRfixComputationRuleBRfixRollingRuleBRfixFusionRuleBR isFixExprTmkFixTunsafeReplaceRunsafeReplaceStashR nonrecToRecR recToNonrecR caseElimR caseFloatAppR caseFloatArgRcaseFloatCaseR caseFloatLetRcaseFloatCastR caseFloatR caseUnfloatRcaseUnfloatAppRcaseUnfloatArgsR caseReduceIdR caseReduceRcaseReduceLiteralRcaseReduceDataconR caseSplitR caseIntroSeqRcaseSplitInlineRcaseInlineScrutineeRcaseInlineAlternativeRcaseMergeAltsRcaseMergeAltsWithWildRcaseElimInlineScrutineeRcaseElimMergeAltsR caseElimSeqR castElimReflR castElimSymR castFloatAppRcastElimSymPlusR letSubstR letSubstSafeRletNonRecSubstRletNonRecSubstSafeR letIntroRletElimRletNonRecElimR letRecElimR letToCaseR letFloatAppR letFloatArgR letFloatLetR letFloatLamR letFloatCaseR letFloatCastR letFloatExprR letFloatTopR letUnfloatRletUnfloatCaseRletUnfloatAppRletUnfloatLamRreorderNonRecLetsR letTupleR betaReduceRbetaReducePlusR betaExpandR etaReduceR etaExpandRmultiEtaExpandRflattenModuleRflattenProgramRflattenProgramT abstractRpushR RenderCoderStartrEnd rDoHighlightrPutStrHTMLUnicode RenderSpecial renderSpecial SpecialSymbol ForallSymbolTypeBindSymbol TypeSymbolCoercionBindSymbolCoercionSymbol CastSymbolRightArrowSymbol TypeOfSymbol LambdaSymbol ShowOptionOmitAbstractShow PrettyOptionspo_fullyQualified po_exprTypes po_coercionspo_typesForBinderspo_focuspo_depthpo_notes po_ribbonpo_widthPrettyC prettyC_path prettyC_varsprettyC_optionsPrettyHSyntaxForColor WarningColorLitColor TypeColor CoercionColorIdColor SyntaxColor KeywordColorAttr SpecialFontColorPathAttrTranslateCoreTCDocHBox TranslateDocHunTranslateDocHDocHattrPidColor typeColor coercionColor keywordColor markColor specialFont liftPrettyH liftPrettyC initPrettyCupdateTypeShowOptionupdateCoShowOptionupdateWidthOption renderCode coreRendersvlisthlistcleanupUnfoldRunfoldR unfoldPredR unfoldNameR unfoldNamesRunfoldSaturatedR specializeR rememberR unfoldStashR showStashTunfoldBasicCombinatorR simplifyRbashRbashExtendedWithR bashDebugR bashUsingR WWAssumptionWWAssumptionTagCBA workLabelwwFacBR wwFusionBRwwGenerateFusionRwwSplitRwwSplitStaticArgwwAssAwwAssBwwAssC wwResultFacBRwwResultFusionBRwwResultGenerateFusionRwwResultSplitRwwResultSplitStaticArg wwResultAssA wwResultAssB wwResultAssCInterp interpExprHinterpASTKernelresumeKabortKapplyKqueryKdeleteKlistK hermitKernelSAST ScopedKernelresumeSabortSapplySquerySdeleteSlistSpathSmodPathS beginScopeS endScopeSkernelStoASTS DirectionTURL moveLocally scopedKernel PhaseInfophaseNum phasesDone phasesLeftCorePassUnknownNoOp PluginPassPasses RuleCheck FloatOutwardsSimplifyPrepTidy DesugarOptDesugar VectorisationCSE SpecConstr Specialising WorkerWrapper Strictness StaticArgs PrintCore LiberateCase FloatInwards HermitPass hermitPlugin ghcPasses getCorePassppCoreTC ppModGuts ppCoreProg ppCoreBind ppCoreAlt ppCoreExpr ppKindOrType ppCoercion ScriptNameCommandLineState cl_cursor cl_prettycl_pretty_opts cl_render cl_heightcl_navcl_running_scriptcl_tick cl_corelint cl_failhard cl_windowcl_dict cl_scripts cl_kernel cl_initSAST cl_version VersionStorevs_graphvs_tagsCLMunCLM CLExceptionCLError CLContinueCLResumeCLAbort VersionCmdAddTagGotoTagGotoStepBack MetaCommandSeqMeta SaveScript RunScript DefineScriptScriptToRewriteSaveFileLoadFileDumpDiffContinueAbortResume RewriteNameQueryFunInquiryDisplay QueryDocH QueryString ShellEffect CLSModify KernelEffectCorrectnessCriteraDeleteEndScope BeginScope PathfinderApply ShellCommandmessage loadAndRunabortresumecontinuerunCLM iokm2clm'iokm2clm iokm2clm''newSASTaddScriptToDictUnicodeTerminal showRendererschangeRenderershellRenderersunicodeConsoledoSGR undoSGRWith setHighlightmkDict pp_dictionaryinterpShellCommandshell_externalsgc setWindow versionCmdshowDerivationTreeshowRefactorTrail showGraphdisplayScripts showScripts getFocusPath shellComplete commandLine evalScriptperformKernelEffectperformShellEffect performQueryperformMetaCommand cl_kernel_envdiffDocHdiffROMoptimizeomToIO interactiverunqueryatphaseafterbefore allPhases firstPhase lastPhasedisplay setPrettysetPrettyOptionspluginisScriptIdFirstCharisScriptIdCharisScriptInfixIdCharisCoreIdFirstChar isCoreIdCharisCoreInfixIdCharinfixOperatorSymbolsbaseGHC.BaseStringtest HappyAddrHappyA#HappyStk Happy_IntList HappyConsTokenInfixOpIdentQuoteTickStmtEndListEnd ListDelim ListStartScopeEnd ScopeStart ParenRight ParenLeftHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'parserhappySeq parseErrorlexErrorlexer lexStringlexCore unparseAtom happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeqnodups equivalentBy equivalentwhenJust Data.MaybeJustcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameVarSetName NamedThingtemplate-haskellLanguage.Haskell.TH.SyntaxVar BasicTypesOccInfoIdTyVarCoVar isQualifiedshowAttributes$fMonadIOCoreM$fMonoidUniqFM CoreMonadPluginghc-primGHC.Prim+#-#*#>#>=#==#/=#<#<=# Cabal-1.16.0!Distribution.InstalledPackageInfo haddockHTMLshaddockInterfaces frameworks frameworkDirs ldOptions ccOptions hugsOptionsdependsincludes includeDirsextraGHCiLibrariesextraLibraries hsLibraries libraryDirs importDirstrusted hiddenModulesexposedModulesexposedcategory descriptionsynopsispkgUrlhomepage stabilityauthor maintainer copyrightlicensesourcePackageIdinstalledPackageIdInstalledPackageInfoInstalledPackageInfo_Distribution.Package pkgVersionpkgNamePackageIdentifierDistribution.Text Data.VersionVersion versionBranch versionTags Debug.Tracetrace Data.Data mkNoRepType Data.Listfoldl1'thNameToGhcName dumpIfSet_dyn debugTraceMsgdebugTraceMsgS fatalErrorMsgfatalErrorMsgSerrorMsg errorMsgSputMsgputMsgSgetFirstAnnotationsgetAnnotationsreinitializeGlobalsgetOrigNameCache addSimplCount getModule getRuleBase getHscEnvliftIOWithCountrunCoreM pprSimplCountplusSimplCount doSimplTickdoFreeSimplTickhasDetailedCountsisZeroSimplCountzeroSimplCount simplCountN bindsOnlyPass defaultPlugindumpSimplPhaserunMayberunWhenpprPassDetailslintPassResultdumpPassResult dumpIfSetendPassshowPassCoreDoSimplifyCoreDoPluginPassCoreDoFloatInwardsCoreDoFloatOutwardsCoreLiberateCaseCoreDoPrintCoreCoreDoStaticArgsCoreDoStrictnessCoreDoWorkerWrapperCoreDoSpecialisingCoreDoSpecConstrCoreCSECoreDoRuleCheckCoreDoVectorisation CoreDoNothing CoreDoPasses CoreDesugarCoreDesugarOptCoreTidyCorePrepCoreToDo sm_eta_expand sm_case_case sm_inlinesm_rulessm_phasesm_names SimplModeSimplifierModefloatOutPartialApplicationsfloatOutConstantsfloatOutLambdasFloatOutSwitchesCommandLineOptioninstallCoreToDos SimplCountPreInlineUnconditionallyPostInlineUnconditionally UnfoldingDone RuleFiredLetFloatFromLet EtaExpansion EtaReduction BetaReduction CaseOfCase KnownBranch CaseMergeAltMergeCaseElim CaseIdentityFillInCaseDefault BottomFoundSimplifierDoneCoreMMkCoreeRROR_IDaBSENT_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_IDnO_METHOD_BINDING_ERROR_ID pAT_ERROR_IDrEC_CON_ERROR_IDiRREFUT_PAT_ERROR_IDrUNTIME_ERROR_IDrEC_SEL_ERROR_IDerrorIdsmkImpossibleExprmkRuntimeErrorApp mkBuildExpr mkFoldrExpr mkListExpr mkConsExpr mkNilExprmkSmallTupleCase mkTupleCasemkSmallTupleSelectormkTupleSelector wrapFloatmkBigCoreTupTy mkBigCoreTupmkBigCoreVarTupTymkBigCoreVarTup mkCoreTupmkCoreVarTupTy mkCoreVarTup mkChunkifiedmkEqBoxmkStringExprFS mkStringExpr mkCharExpr mkDoubleExpr mkFloatExpr mkIntegerExprmkWordExprWord mkWordExpr mkIntExprInt mkIntExpr mkCoreLamscastBottomExpr mkIfThenElse mkWildCasemkWildValBindermkWildEvBinder mkCoreConApps mkCoreApps mkCoreApp mkCoreLets mkCoreLet sortQuantVarsFloatLet FloatCase FloatBindHscTypesemptyModBreaksbyteCodeOfObject nameOfObjectisInterpretableisObject linkableObjsisObjectLinkablenumToTrustInfotrustInfoToNumnoIfaceTrustInfo setSafeMode getSafeModeisNoIfaceVectInfonoIfaceVectInfo plusVectInfo noVectInfo isHpcUsed emptyHpcInfo showModMsg isBootSummary msObjFilePath msHiFilePath msHsFilePathms_imps ms_mod_nameemptyMG addEpsInStatsnoDependencies lookupFixityemptyFixityEnvmkIfaceFixCache plusWarnsemptyIfaceWarnCachemkIfaceWarnCache tyThingIdtyThingDataContyThingCoAxiom tyThingTyConlookupTypeHscEnv lookupTypeextendTypeEnvWithIdsextendTypeEnvList extendTypeEnv lookupTypeEnvtypeEnvFromEntitiesmkTypeEnvWithImplicits mkTypeEnvtypeEnvClassestypeEnvDataCons typeEnvIdstypeEnvCoAxioms typeEnvTyCons typeEnvElts emptyTypeEnvtyThingAvailInfotyThingsTyVarstyThingParent_maybeisImplicitTyThingimplicitTyConThingsimplicitClassThingsimplicitTyThingsmkPrintUnqualifiedsubstInteractiveContexticPlusGblRdrEnvsetInteractivePrintNameextendInteractiveContext icPrintUnqual icInScopeTTsemptyInteractiveContext appendStubCemptyModDetailsmkIfaceHashCache emptyModIfaceprepareAnnotationshptObjshptRules hptVectInfo hptInstanceslookupIfaceByModuleemptyPackageIfaceTableemptyHomePackageTable pprTargetId pprTargethscEPShandleFlagWarningsprintOrThrowWarningshandleSourceError throwOneErrormkApiErrsrcErrorMessagesmkSrcErr SourceError GhcApiErrorhsc_type_env_varhsc_MLChsc_FChsc_NChsc_EPShsc_HPThsc_IC hsc_mod_graph hsc_targets hsc_dflagsHscEnvtargetContentstargetAllowObjCodetargetIdTarget TargetModule TargetFileTargetIdHomePackageTablePackageIfaceTable hm_linkable hm_detailshm_iface HomeModInfo FinderCacheFound NoPackage FoundMultiplefr_suggestionsfr_pkgs_hiddenfr_mods_hiddenfr_pkgfr_pathsNotFound FindResultModLocationCache mi_trust_pkgmi_trustmi_hpc mi_hash_fn mi_fix_fn mi_warn_fn mi_vect_infomi_orphan_hashmi_rules mi_fam_instsmi_insts mi_globalsmi_declsmi_annsmi_warns mi_fixities mi_used_th mi_exp_hash mi_exports mi_usagesmi_depsmi_boot mi_finsts mi_orphan mi_flag_hash mi_mod_hash mi_iface_hash mi_moduleModIface IfaceExport md_vect_infomd_annsmd_rules md_fam_instsmd_instsmd_types md_exports ModDetails ImportedModsImportedModsValmg_dependent_files mg_trust_pkgmg_safe_haskellmg_fam_inst_env mg_inst_env mg_vect_info mg_vect_decls mg_modBreaks mg_hpc_infomg_annsmg_warns mg_foreignmg_bindsmg_rules mg_fam_instsmg_instsmg_tcs mg_fix_env mg_rdr_env mg_used_th mg_used_names mg_dir_impsmg_deps mg_exportsmg_boot mg_moduleModGuts cg_modBreaks cg_hpc_info cg_dep_pkgs cg_foreigncg_binds cg_tycons cg_moduleCgGutsNoStubs ForeignStubsic_cwd ic_resume ic_default ic_int_print ic_fix_env ic_instances ic_sys_vars ic_tythings ic_rn_gbl_env ic_importsic_monad ic_dflagsInteractiveContextIIDeclIIModuleInteractiveImportTypeEnv lookupTyCon lookupDataConlookupId lookupThing MonadThings NoWarningsWarnAllWarnSomeWarnings FixityEnvFixItemWhetherHasOrphansIsBootInterface dep_finsts dep_orphsdep_pkgsdep_modsDeps Dependenciesusg_safe usg_mod_hashusg_modUsagePackageModule usg_exports usg_entities usg_mod_nameUsageHomeModule usg_mtime usg_file_path UsageFileUsagePackageTypeEnvPackageRuleBasePackageInstEnv eps_statseps_mod_fam_inst_env eps_ann_env eps_vect_info eps_rule_baseeps_fam_inst_env eps_inst_enveps_PTEeps_PIT eps_is_bootEPSExternalPackageState n_insts_out n_insts_in n_rules_out n_rules_in n_decls_out n_decls_in n_ifaces_inEpsStatsnsNamesnsUniqs NameCache OrigNameCache ModuleGraph ms_hspp_buf ms_hspp_opts ms_hspp_filems_textual_imps ms_srcimps ms_obj_date ms_hs_date ms_location ms_hsc_srcms_mod ModSummarySourceModifiedSourceUnmodifiedSourceUnmodifiedAndStable hpcInfoHashhpcInfoTickCountHpcInfohpcUsed NoHpcInfo AnyHpcUsagevectInfoScalarTyConsvectInfoScalarVarsvectInfoDataCon vectInfoTyCon vectInfoVarVectInfoifaceVectInfoScalarTyConsifaceVectInfoScalarVarsifaceVectInfoTyConReuseifaceVectInfoTyConifaceVectInfoVar IfaceVectInfo IsSafeImportIfaceTrustInfo hpm_src_files hpm_moduleHsParsedModulelinkableUnlinkedlinkableModule linkableTimeLMLinkableDotODotADotDLLBCOsUnlinked BreakIndexmodBreaks_declsmodBreaks_varsmodBreaks_locsmodBreaks_flags ModBreaks ByteCodeAsmCompiledByteCodeRulesruleCheckProgram lookupRule pprRuleBase unionRuleBaseextendRuleBaseList mkRuleBase emptyRuleBasegetRules rulesOfBindsaddIdSpecialisations addSpecInfoextendSpecInfo mkSpecInfopprRulesForUser roughTopNamesmkRuleRuleBase CoreSubstexprIsLiteral_maybeexprIsConApp_maybe simpleOptPgmsimpleOptExprWith simpleOptExpr substTickishsubstRulesForImportedIds substSpec substIdOccsubstUnfoldingSourcesubstUnfoldingsubstUnfoldingSCsubstCosubstTycloneRecIdBndrs cloneBndr cloneBndrs cloneIdBndrs cloneIdBndr substRecBndrs substBndrs substBndr deShadowBinds substBind substBindSC substExpr substExprSC setInScopeextendInScopeIdsextendInScopeList extendInScope addInScopeSet isInScope mkOpenSubstdelBndrsdelBndr lookupCvSubst lookupTvSubst lookupIdSubstextendSubstListextendSubstWithVar extendSubstextendCvSubstList extendCvSubstextendTvSubstList extendTvSubstextendIdSubstList extendIdSubst zapSubstEnv substInScopemkSubst mkEmptySubst emptySubst isEmptySubstSubst IdSubstEnvPackages dumpPackages isDllNamegetPreloadPackagesAndlookupModuleWithSuggestionslookupModuleInAllPackagesgetPackageFrameworksgetPackageFrameworkPathgetPackageExtraCcOpts packageHsLibscollectLinkOptsgetPackageLinkOptscollectLibraryPathsgetPackageLibraryPathcollectIncludeDirsgetPackageIncludePath initPackagesgetPackageDetailsextendPackageConfigMap lookupPackageemptyPackageConfigMapinstalledPackageIdMapmoduleToPkgConfAllpreloadPackagespkgIdMap PackageStatePackageConfigMap CoreUtils rhsIsStatic tryEtaReducehashExprexprSize coreBindsSizecoreBindsStatseqExprXeqExpr exprIsBig cheapEqExprdataConRepFSInstPatdataConRepInstPat exprIsConLike exprIsHNFexprOkForSideEffectsexprOkForSpeculationisExpandableApp isCheapApp exprIsCheap'exprIsExpandable exprIsCheapexprIsWorkFree exprIsDupable exprIsBottomgetIdFromTrivialExpr exprIsTrivial filterAlts trimConArgs mergeAltsfindAlt isDefaultAlt findDefault mkAltExprneedsCaseBinding bindNonRec mkTickNoHNFmkTickmkCastapplyTypeToArgsapplyTypeToArg coreAltsType coreAltTypeexprType CheapAppFuncs_cocs_tycs_tmCS CoreStatsCoreFVsfreeVarsstableUnfoldingVarsidUnfoldingVars idRuleVarsidRuleAndUnfoldingVars idFreeVars varTypeTyVars freeVarsOf vectsFreeVarsruleLhsFreeIds rulesFreeVars idRuleRhsVarsruleRhsFreeVarsruleLhsOrphNamesexprsSomeFreeVarsexprSomeFreeVars exprsFreeVarsInterestingVarFunCoreBindWithFVsCoreExprWithFVs TysWiredIn isPArrFakeCon parrFakeCon isPArrTyCon parrTyConmkPArrTyunitTy mkTupleTy consDataCon nilDataConmkPromotedListTy listTyConmkListTy gtDataConId eqDataConId ltDataConId gtDataCon eqDataCon ltDataCon trueDataConIdfalseDataConId trueDataCon falseDataCon boolTyConboolTy doubleDataCon doubleTyCondoubleTy floatDataCon floatTyConfloatTy wordDataCon wordTyConwordTy intDataConintTyConintTyintegerGmpSDataConstringTy charDataCon charTyConcharTy eqBoxDataConunboxedPairDataConunboxedPairTyConunboxedSingletonDataConunboxedSingletonTyConunboxedUnitDataConunboxedUnitTyCon pairTyCon unitDataConId unitDataCon unitTyContupleConpromotedTupleDataConpromotedTupleTyCon tupleTyCon eqTyCon_RDR parrTyCon_RDRconsDataCon_RDR listTyCon_RDRintDataCon_RDR charTyCon_RDR intTyCon_RDRtrue_RDR false_RDR boolTyCon_RDR parrTyConNamedoubleTyConNamefloatTyConNameconsDataConName listTyConName boolTyConName intTyConName charTyConName eqTyConName wiredInTyConstransferPolyIdInfozapFragileIdInfozapDemandIdInfo zapLamIdInfoclearOneShotLambdasetOneShotLambdaisOneShotLambdaisStateHackType isOneShotBndr idLBVarInfo isConLikeIdidRuleMatchInfosetInlineActivationidInlineActivationmodifyInlinePragmasetInlinePragmaidInlinePragma zapIdOccInfo setIdOccInfo idOccInfo setIdCafInfo idCafInfosetIdSpecialisation idHasRules idCoreRulesidSpecialisationsetIdDemandInfo idDemandInfoidDemandInfo_maybesetIdUnfoldingsetIdUnfoldingLazilyrealIdUnfolding idUnfolding isStrictIdzapIdStrictnesssetIdStrictness idStrictnessidStrictness_maybe isBottomingId idRepArity setIdArityidArityisDictIdisEvVar isDeadBinderidIsFrom isImplicitId hasNoBinding idDataConisDataConId_maybeisDataConWorkId_maybeisDataConWorkIdisFCallId_maybe isFCallIdisPrimOpId_maybe dfunNSilentisDFunId isPrimOpIdisClassOpId_maybeisNaughtyRecordSelectorisRecordSelectorrecordSelectorFieldLabelmkTemplateLocalsNummkTemplateLocalsmkTemplateLocal mkWorkerIdmkWiredInIdName mkUserLocalM mkUserLocal mkSysLocalM mkSysLocalmkExportedLocalIdmkLocalIdWithInfo mkLocalIdmkVanillaGlobalWithInfomkVanillaGlobal mkGlobalIdmaybeModifyIdInfo modifyIdInfo setIdInfo localiseId setIdType setIdUnique setIdNameidTypeidUniqueidNameIdInfozapFragileInfo zapDemandInfo zapLamInfohasNoLBVarInfo noLBVarInfo ppCafInfomayHaveCafRefs seqSpecInfosetSpecInfoHead specInfoRulesspecInfoFreeVarsisEmptySpecInfo emptySpecInfo pprStrictness ppArityInfo unknownArity noCafIdInfosetStrictnessInfo setDemandInfo setLBVarInfo setCafInfo setArityInfosetUnfoldingInfosetUnfoldingInfoLazily setOccInfosetInlinePragInfo setSpecInfo megaSeqIdInfo seqIdInfo VanillaId sel_naughty sel_tyconRecSelId DataConWorkId DataConWrapId ClassOpIdPrimOpIdFCallId TickBoxOpIdDFunId demandInfostrictnessInfooccInfoinlinePragInfo lbvarInfocafInfo unfoldingInfospecInfo arityInfo ArityInfoInlinePragInfoSpecInfoMayHaveCafRefs NoCafRefsCafInfo NoLBVarInfoIsOneShotLambda LBVarInfo TickBoxIdTickBox TickBoxOpCoreSyncollectAnnBndrsdeAnnAlt deAnnotate' deAnnotatecollectAnnArgsseqRulesseqExprsseqExpr valArgCount valBndrCount isTypeArg isTyCoArgisValArg isRuntimeArg isRuntimeVar collectArgscollectValBinderscollectTyBinderscollectTyAndValBinderscollectBinders flattenBinds rhssOfAlts rhssOfBindbindersOfBinds bindersOfvarsToCoreExprs varToCoreExprmkCoBindmkTyBindmkLetsmkLamsmkDoubleLitDouble mkDoubleLitmkFloatLitFloat mkFloatLit mkStringLit mkCharLitmkInt64LitInt64mkWord64LitWord64 mkWordLitWord mkWordLit mkIntLitIntmkIntLitmkConApp mkVarAppsmkCoAppsmkTyAppsmkApps cmpAltConltAltcmpAlt canUnfoldneverUnfoldGuidancehasSomeUnfoldingisClosedUnfoldingunfoldingArityisStableUnfoldingisCompulsoryUnfoldingisStableCoreUnfolding_maybeexpandUnfolding_maybeisExpandableUnfoldingisCheapUnfoldingisConLikeUnfoldingisEvaldUnfoldingisValueUnfolding otherConsmaybeUnfoldingTemplatesetUnfoldingTemplateunfoldingTemplateisStableSource seqUnfolding mkOtherConevaldUnfolding noUnfoldingboringCxtNotOk boringCxtOk unSaturatedOk needSaturated dfunArgExprs setRuleIdName isLocalRule ruleIdNameruleActivationruleName ruleArity isBuiltinRuletickishCanSplit tickishIsCode mkNoScopemkNoTick tickishScoped tickishCountsLitAppLamLetCaseCastCoercionExprArgAltDataAltLitAltDEFAULTAltConNonRecRecBind profNoteScope profNoteCount profNoteCCProfNotetickId tickModuleHpcTick breakpointFVs breakpointId BreakpointTickishru_localru_autoru_rhsru_argsru_bndrsru_roughru_fnru_actru_nameRuleru_tryru_nargs BuiltinRuleCoreRuleIdUnfoldingFunVectNoVectVectType VectClassVectInstCoreVect NoUnfoldingOtherCon DFunUnfolding uf_guidance uf_expandableuf_is_work_free uf_is_conlike uf_is_valueuf_arity uf_is_topuf_srcuf_tmpl CoreUnfolding Unfolding DFunPolyArg DFunLamArgDFunArg InlineRhs InlineStableInlineCompulsory InlineWrapperUnfoldingSource ug_boring_ok ug_unsat_okUnfWhenug_resug_sizeug_args UnfIfGoodArgsUnfNeverUnfoldingGuidance CoreProgramCoreBndrCoreExprCoreArgCoreBindCoreAltTB TaggedBndr TaggedBind TaggedExpr TaggedArg TaggedAltAnnExprAnnVarAnnLitAnnLamAnnAppAnnCaseAnnLetAnnCastAnnTickAnnType AnnCoercionAnnExpr'AnnAlt AnnNonRecAnnRecAnnBindDataConisPromotableTyCon promoteTyConpromoteDataCon_maybepromoteDataCondeepSplitProductTypedeepSplitProductType_maybesplitProductTypesplitProductType_maybedataConCannotMatch classDataConisUnboxedTupleCon isTupleCondataConIdentitydataConRepArgTysdataConOrigArgTysdataConInstOrigArgTysdataConInstArgTysdataConUserTypedataConStupidThetadataConOrigResTydataConFullSig dataConSigdataConRepStrictnessisNullaryRepDataConisNullarySrcDataCondataConRepRepAritydataConRepAritydataConSourceAritydataConExStrictsdataConStrictMarksdataConFieldTypedataConFieldLabelsdataConImplicitIds dataConWrapIddataConWrapId_maybe dataConWorkId dataConTheta dataConEqSpecdataConAllTyVarsdataConExTyVarsdataConUnivTyVarsdataConIsInfixdataConRepTypedataConOrigTyCon dataConTyCon dataConTag eqSpecPreds mkDataCon fIRST_TAGDCIds DataConIdsConTagapplyCo coercionKinds coercionKind coercionTypeseqCo liftCoMatchliftCoSubstTyVarliftCoSubstWith lookupCoVar substCoVars substCoVarsubstCossubstCoWithTys substCoWithTyzipOpenCvSubst mkCvSubstsubstCoVarBndrextendCvSubstAndInScope tvCvSubst cvTvSubst zapCvSubstEnv getCvInScopeisEmptyCvSubst emptyCvSubstemptyCvSubstEnvcoreEqCoercion2coreEqCoercionsplitNewTypeRepCo_maybeinstNewTyCon_maybemkCoCastmkPiComkPiCos mkNewTypeCo mkUnsafeComkInstComkNthCo mkTransComkSymCo mkForAllComkFunCo mkTyConAppComkAppCo mkAxInstRHS mkAxInstComkReflCo mkCoVarCoisReflCo_maybeisReflComkCoercionType coVarKindsplitForAllCo_maybesplitAppCo_maybesplitTyConAppCo_maybegetCoVar_maybe decomposeCo pprCoAxiom pprParendCopprCo coercionSize coVarsOfCo tyCoVarsOfCos tyCoVarsOfCo isCoVarTypeisCoVar setCoVarNamesetCoVarUnique coVarNamecoAxiomSplitLHSRefl TyConAppCoAppCoForAllCoCoVarCo AxiomInstCoUnsafeCoSymCoTransCoNthCoInstCo CvSubstEnvCvSubstDynFlags compilerInfo picCCOpts setTmpDirsetPackageName rtsIsProfiledglasgowExtsFlagsxFlagssupportedLanguagesAndExtensions fLangFlagsfFlags fWarningFlags flagsPackage flagsDynamicflagsAllallFlagsparseDynamicFlagsFullparseDynamicFilePragmaparseDynamicFlagsCmdLine getStgToDo updOptLevelshowOpt getVerbFlagsgetOpts unsafeFlagssafeImplicitImpsReqsafeDirectImpsReq safeImportsOn safeInferOnsafeLanguageOn safeHaskellOnpackageTrustOndynFlagDependencieslang_set xopt_unsetxopt_setxopt wopt_unsetwopt_setwopt dopt_unsetdopt_setdoptprintInfoForUserprintOutputForUserdefaultFlushErrdefaultFlushOutdefaultLogActionHPrintDocdefaultLogActiondefaultFatalMessagerdefaultDynFlags initDynFlagsdefaultObjectTargetdoingTickyProfilingisNoLink isOneShottargetRetainsAllBindingsisObjectTargetwayNamesopt_lcopt_lo opt_windresopt_lopt_aopt_copt_Fopt_Popt_Lpgm_lcpgm_lo pgm_windres pgm_sysmanpgm_Tpgm_dllpgm_lpgm_apgm_spgm_cpgm_Fpgm_Ppgm_LsystemPackageConfigextraGccViaCFlags rawSettingstmpDirtopDir ghciUsagePath ghcUsagePathOpt_D_dump_cmmOpt_D_dump_raw_cmmOpt_D_dump_cmmzOpt_D_dump_cmmz_cfgOpt_D_dump_cmmz_cbeOpt_D_dump_cmmz_procOpt_D_dump_cmmz_spillsOpt_D_dump_cmmz_rewriteOpt_D_dump_cmmz_deadOpt_D_dump_cmmz_stubOpt_D_dump_cmmz_spOpt_D_dump_cmmz_procmapOpt_D_dump_cmmz_splitOpt_D_dump_cmmz_lowerOpt_D_dump_cmmz_infoOpt_D_dump_cmmz_cafsOpt_D_dump_cps_cmmOpt_D_dump_cvt_cmmOpt_D_dump_asmOpt_D_dump_asm_nativeOpt_D_dump_asm_livenessOpt_D_dump_asm_coalesceOpt_D_dump_asm_regallocOpt_D_dump_asm_regalloc_stagesOpt_D_dump_asm_conflictsOpt_D_dump_asm_statsOpt_D_dump_asm_expandedOpt_D_dump_llvmOpt_D_dump_core_statsOpt_D_dump_cpranalOpt_D_dump_deriv Opt_D_dump_dsOpt_D_dump_flatCOpt_D_dump_foreignOpt_D_dump_inliningsOpt_D_dump_rule_firingsOpt_D_dump_rule_rewritesOpt_D_dump_occur_analOpt_D_dump_parsed Opt_D_dump_rnOpt_D_dump_core_pipelineOpt_D_dump_simplOpt_D_dump_simpl_iterationsOpt_D_dump_simpl_phasesOpt_D_dump_specOpt_D_dump_prepOpt_D_dump_stgOpt_D_dump_stranal Opt_D_dump_tcOpt_D_dump_typesOpt_D_dump_rulesOpt_D_dump_cseOpt_D_dump_worker_wrapperOpt_D_dump_rn_traceOpt_D_dump_rn_statsOpt_D_dump_opt_cmmOpt_D_dump_simpl_statsOpt_D_dump_cs_traceOpt_D_dump_tc_traceOpt_D_dump_if_traceOpt_D_dump_vt_traceOpt_D_dump_splicesOpt_D_dump_BCOsOpt_D_dump_vectOpt_D_dump_avoid_vectOpt_D_dump_tickedOpt_D_dump_rttiOpt_D_source_statsOpt_D_verbose_core2coreOpt_D_verbose_stg2stg Opt_D_dump_hiOpt_D_dump_hi_diffsOpt_D_dump_minimal_importsOpt_D_dump_mod_cycles!Opt_D_dump_view_pattern_commoningOpt_D_faststring_statsOpt_DumpToFileOpt_D_no_debug_outputOpt_DoCoreLintingOpt_DoStgLintingOpt_DoCmmLintingOpt_DoAsmLintingOpt_NoLlvmManglerOpt_WarnIsErrorOpt_PrintExplicitForallsOpt_StrictnessOpt_FullLaziness Opt_FloatInOpt_Specialise Opt_StaticArgumentTransformationOpt_CSEOpt_LiberateCaseOpt_SpecConstrOpt_DoLambdaEtaExpansionOpt_IgnoreAssertsOpt_DoEtaReduction Opt_CaseMergeOpt_UnboxStrictFieldsOpt_DictsCheapOpt_EnableRewriteRules Opt_Vectorise Opt_AvoidVect Opt_RegsGraphOpt_RegsIterativeOpt_PedanticBottoms Opt_LlvmTBAAOpt_RegLivenessOpt_IrrefutableTuplesOpt_IgnoreInterfacePragmasOpt_OmitInterfacePragmasOpt_ExposeAllUnfoldingsOpt_AutoSccsOnIndividualCafsOpt_ProfCountEntriesOpt_PpOpt_ForceRecompOpt_ExcessPrecisionOpt_EagerBlackHoling Opt_NoHsMain Opt_SplitObjs Opt_StgStatsOpt_HideAllPackagesOpt_PrintBindResult Opt_HaddockOpt_HaddockOptionsOpt_Hpc_No_AutoOpt_BreakOnExceptionOpt_BreakOnErrorOpt_PrintEvldWithShowOpt_PrintBindContentsOpt_GenManifestOpt_EmbedManifestOpt_EmitExternalCoreOpt_SharedImplibOpt_BuildingCabalPackageOpt_SSE2 Opt_SSE4_2Opt_IgnoreDotGhciOpt_GhciSandboxOpt_GhciHistoryOpt_HelpfulErrorsOpt_DeferTypeErrors Opt_ParallelOpt_GranMacrosOpt_PprCaseAsLet Opt_RunCPS Opt_RunCPSZOpt_AutoLinkPackagesOpt_ImplicitImportQualifiedOpt_TryNewCodeGenOpt_KeepHiDiffsOpt_KeepHcFilesOpt_KeepSFilesOpt_KeepTmpFilesOpt_KeepRawTokenStreamOpt_KeepLlvmFilesOpt_DistrustAllPackagesOpt_PackageTrustDynFlagOpt_WarnDuplicateExportsOpt_WarnHiShadowsOpt_WarnImplicitPreludeOpt_WarnIncompletePatternsOpt_WarnIncompleteUniPatterns Opt_WarnIncompletePatternsRecUpdOpt_WarnMissingFieldsOpt_WarnMissingImportListOpt_WarnMissingMethodsOpt_WarnMissingSigsOpt_WarnMissingLocalSigsOpt_WarnNameShadowingOpt_WarnOverlappingPatternsOpt_WarnTypeDefaultsOpt_WarnMonomorphismOpt_WarnUnusedBindsOpt_WarnUnusedImportsOpt_WarnUnusedMatchesOpt_WarnWarningsDeprecationsOpt_WarnDeprecatedFlagsOpt_WarnDodgyExportsOpt_WarnDodgyImportsOpt_WarnOrphansOpt_WarnAutoOrphansOpt_WarnIdentities Opt_WarnTabsOpt_WarnUnrecognisedPragmasOpt_WarnDodgyForeignImportsOpt_WarnLazyUnliftedBindingsOpt_WarnUnusedDoBindOpt_WarnWrongDoBind)Opt_WarnAlternativeLayoutRuleTransitionalOpt_WarnUnsafe Opt_WarnSafeOpt_WarnPointlessPragmas%Opt_WarnUnsupportedCallingConventions WarningFlag Haskell98 Haskell2010Sf_None Sf_UnsafeSf_TrustworthySf_SafeSf_SafeInferredSafeHaskellModeOpt_CppOpt_OverlappingInstancesOpt_UndecidableInstancesOpt_IncoherentInstancesOpt_MonomorphismRestrictionOpt_MonoPatBindsOpt_MonoLocalBindsOpt_RelaxedPolyRecOpt_ExtendedDefaultRulesOpt_ForeignFunctionInterfaceOpt_UnliftedFFITypesOpt_InterruptibleFFI Opt_CApiFFIOpt_GHCForeignImportPrimOpt_ParallelArrays Opt_ArrowsOpt_TemplateHaskellOpt_QuasiQuotesOpt_ImplicitParamsOpt_ImplicitPreludeOpt_ScopedTypeVariablesOpt_UnboxedTuplesOpt_BangPatternsOpt_TypeFamiliesOpt_OverloadedStringsOpt_DisambiguateRecordFieldsOpt_RecordWildCardsOpt_RecordPunsOpt_ViewPatterns Opt_GADTsOpt_GADTSyntaxOpt_NPlusKPatternsOpt_DoAndIfThenElseOpt_RebindableSyntaxOpt_ConstraintKinds Opt_PolyKinds Opt_DataKindsOpt_InstanceSigsOpt_StandaloneDerivingOpt_DeriveDataTypeableOpt_DeriveFunctorOpt_DeriveTraversableOpt_DeriveFoldableOpt_DeriveGenericOpt_DefaultSignaturesOpt_TypeSynonymInstancesOpt_FlexibleContextsOpt_FlexibleInstancesOpt_ConstrainedClassMethodsOpt_MultiParamTypeClassesOpt_FunctionalDependenciesOpt_UnicodeSyntaxOpt_PolymorphicComponentsOpt_ExistentialQuantification Opt_MagicHashOpt_EmptyDataDeclsOpt_KindSignaturesOpt_ParallelListCompOpt_TransformListCompOpt_MonadComprehensionsOpt_GeneralizedNewtypeDerivingOpt_RecursiveDoOpt_PostfixOperatorsOpt_TupleSectionsOpt_PatternGuardsOpt_LiberalTypeSynonymsOpt_Rank2TypesOpt_RankNTypesOpt_ImpredicativeTypesOpt_TypeOperatorsOpt_ExplicitNamespacesOpt_PackageImportsOpt_ExplicitForAllOpt_AlternativeLayoutRule%Opt_AlternativeLayoutRuleTransitionalOpt_DatatypeContextsOpt_NondecreasingIndentationOpt_RelaxedLayoutOpt_TraditionalRecordSyntaxOpt_LambdaCaseOpt_MultiWayIf ExtensionFlag llvmVersioninteractivePrintprofAuto traceLevel ghciScriptshaddockOptionsflushErrflushOut log_actionextensionFlags extensionswarnUnsafeOnLoc warnSafeOnLoc pkgTrustOnLoc newDerivOnLocthOnLoc safeHaskelllanguage warningFlagsflagsgeneratedDumps dirsToClean filesToCleanpkgState pkgDatabase packageFlags extraPkgConfs depSuffixesdepExcludeModsdepIncludePkgDeps depMakefilepluginModNameOptspluginModNameshpcDirrtsOptsEnabledrtsOptscmdlineFrameworksframeworkPaths libraryPaths includePathsdumpPrefixForce dumpPrefix dynLibLoaderoutputHi outputFilehiSufhcSuf objectSufdumpDirstubDirhiDirdylibInstallName objectDir splitInfo rtsBuildTagbuildTagways thisPackage ctxtStkDepth mainFunIs mainModIs importPathscmdlineHcIncludes floatLamArgsliberateCaseThresholdspecConstrCountspecConstrThresholdsimplTickFactorstrictnessBefore ruleCheckshouldDumpSimplPhasemaxSimplIterations simplPhasesoptLevel verbosity extCoreName hscOutNamesettings hscTargetghcLinkghcMode getDynFlags HasDynFlagsextractDynFlagsContainsDynFlags NoProfAuto ProfAutoAll ProfAutoTopProfAutoExports ProfAutoCallsProfAutosOpt_lcsOpt_lo sOpt_windressOpt_lsOpt_asOpt_csOpt_FsOpt_PsOpt_LsPgm_lcsPgm_lo sPgm_windres sPgm_sysmansPgm_TsPgm_dllsPgm_lsPgm_asPgm_ssPgm_csPgm_FsPgm_PsPgm_LsSystemPackageConfigsExtraGccViaCFlags sRawSettingssTmpDirsTopDirsGhciUsagePath sGhcUsagePathsTargetPlatformSettingsHscCHscAsmHscLlvmHscInterpreted HscNothing HscTarget CompManagerOneShotMkDependGhcModeNoLink LinkBinary LinkInMemory LinkDynLibGhcLink ExposePackageExposePackageId HidePackage IgnorePackage TrustPackageDistrustPackage PackageFlag DeployableSystemDependent DynLibLoader RtsOptsNoneRtsOptsSafeOnly RtsOptsAllRtsOptsEnabled FatalMessager LogActionFlushOutFlushErr FileOptionOptionStgDoMassageForProfiling D_stg_statsStgToDo GlobalPkgConf UserPkgConf PkgConfFile PkgConfRefNameEnvlookupNameEnv_NF filterNameEnvdelListFromNameEnvdelFromNameEnvextendNameEnvList_CextendNameEnv_AccnameEnvUniqueElts mapNameEnvextendNameEnv_C plusNameEnv_C plusNameEnv foldNameEnv elemNameEnv mkNameEnv alterNameEnv lookupNameEnvextendNameEnvList extendNameEnv unitNameEnv emptyNameEnv nameEnvEltsdepAnal hashLiteral pprLiteralabsentLiteralOf literalType litIsLifted litFitsInChar litIsDupable litIsTrivial nullAddrLitdouble2FloatLitfloat2DoubleLit int2DoubleLit double2IntLit int2FloatLit float2IntLit int2CharLit char2IntLitnarrow32WordLitnarrow16WordLitnarrow8WordLitnarrow32IntLitnarrow16IntLit narrow8IntLit int2WordLit word2IntLit isZeroLit inCharRange inWordRange inIntRange mkLitInteger mkMachString mkMachChar mkMachDouble mkMachFloat mkMachWord64 mkMachInt64 mkMachWord mkMachIntMachCharMachStr MachNullAddrMachInt MachInt64MachWord MachWord64 MachFloat MachDouble MachLabel LitIntegercloneTyVarBndrsubstTyVarBndr lookupTyVar substTyVars substTyVar deShadowTy substThetasubstTys substKisWith substTysWith substTyWithzipTyEnv zipTopTvSubst mkTopTvSubstzipOpenTvSubst mkOpenTvSubst unionTvSubstextendTvInScopeListextendTvInScope zapTvSubstEnv setTvSubstEnvnotElemTvSubst getTvInScope getTvSubstEnv mkTvSubstisEmptyTvSubst emptyTvSubstcomposeTvSubstemptyTvSubstEnvcmpPredcmpTypescmpType eqTyVarBndrseqPredXeqPredeqTypeseqTypeXeqTypeseqTypesseqTypeisPrimitiveType isStrictTypeisClosedAlgType isAlgTypeisUnboxedTupleTypeisUnLiftedTypepprSourceTyConmkFamilyTyConAppvarSetElemsKvsFirsttypeSizegetEqPredTys_maybe getEqPredTysgetClassPredTys_maybegetClassPredTysclassifyPredTypepredTreePredType isDictLikeTyisDictTy mkClassPred mkPrimEqPredmkEqPredisIPPred_maybeisIPPredisEqPred isClassPredisKindTy applyTysDapplyTysapplyTy dropForAllssplitForAllTyssplitForAllTy_maybe isForAllTy mkPiTypesmkPiType mkPiKinds mkForAllTys mkForAllTy typeRepArity typePrimRepcarefullySplitNewType_mayberepTypeflattenRepTypenewTyConInstRhssplitTyConApp_maybe splitTyConApp tyConAppArgN tyConAppArgstyConAppArgs_maybe tyConAppTyContyConAppTyCon_maybe mkTyConAppfunArgTy funResultTy zipFunTys splitFunTysN splitFunTyssplitFunTy_maybe splitFunTyisFunTymkFunTysmkFunTy isStrLitTy mkStrLitTy isNumLitTy mkNumLitTy splitAppTys splitAppTyrepSplitAppTy_maybesplitAppTy_maybe mkNakedAppTysmkAppTysmkAppTygetTyVar_maybe isTyVarTygetTyVarexpandTypeSynonymstcViewcoreView UnaryType UbxTupleRepUnaryRepRepType ClassPredEqPred TuplePred IrredPredPredTree MetaKindVar SimpleKindconstraintKind openTypeKindunliftedTypeKindliftedTypeKindanyKind superKindconstraintKindTyConunliftedTypeKindTyConopenTypeKindTyConliftedTypeKindTyCon anyKindTyConfunTyCon pprTypeApp pprTvBndr pprTvBndrs pprForAll pprSigmaTypepprThetaArrowTypprTheta pprClassPred pprEqPred pprParendKindpprKind pprParendTypepprTypepprTyThingCategory pprTyThing tyVarsOfTypes tyVarsOfType isKindVar isTypeVar mkTyConTy mkTyVarTys mkTyVarTy KindOrType ThetaTypeAnIdADataConATyConACoAxiomTvSubst TvSubstEnvVarEnvmodifyVarEnv_Directly modifyVarEnvlookupVarEnv_NF zipVarEnvrestrictVarEnvfilterVarEnv_DirectlylookupVarEnv_Directly foldVarEnv isEmptyVarEnv unitVarEnv varEnvKeys varEnvElts emptyVarEnvmkVarEnv mapVarEnvlookupWithDefaultVarEnv lookupVarEnv plusVarEnvintersectsVarEnv minusVarEnv delVarEnv delVarEnvList plusVarEnv_CextendVarEnvListextendVarEnv_AccextendVarEnv_C extendVarEnv alterVarEnvelemVarEnvByKey elemVarEnv emptyTidyEnv nukeRnEnvR nukeRnEnvLlookupRnInScopeinRnEnvRinRnEnvL rnOccR_maybe rnOccL_maybernOccRrnOccL delBndrsR delBndrsLdelBndrRdelBndrLrnEtaRrnEtaLrnBndrRrnBndrLrnBndr2rnBndrs2 rnInScopeSet rnInScopeaddRnInScopeSetmkRnEnv2uniqAway unionInScopelookupInScope_Directly lookupInScopeelemInScopeSet delInScopeSetextendInScopeSetSetextendInScopeSetListextendInScopeSet mkInScopeSetgetInScopeVarsemptyInScopeSet InScopeSetRnEnv2TidyEnvIdEnvTyVarEnvCoVarEnv AnnotationsdeserializeAnnsfindAnns plusAnnEnvextendAnnEnvListmkAnnEnv emptyAnnEnvgetAnnTargetName_maybe ann_value ann_target Annotation NamedTarget ModuleTarget AnnTarget CoreAnnTargetAnnEnv SerializeddeserializeWithDataserializeWithData seqSerializedfromSerialized toSerializedTyConpprPromotionQuotetyConFamilyCoercion_maybetyConFamInst_maybetyConFamInstSig_maybeisFamInstTyCon tyConParenttyConTuple_maybetyConClass_maybe isClassTyContyConSingleDataCon_maybe synTyConType synTyConRhs synTyConDefntyConStupidTheta tyConPrimRep newTyConConewTyConCo_maybenewTyConEtadRhs newTyConRhs algTyConRhstyConFamilySizetyConDataCons_maybe tyConDataCons tyConKindcoreExpandTyCon_maybetcExpandTyCon_maybetyConCType_maybeisImplicitTyCon promotedTyConpromotedDataConisPromotedTyConisPromotedDataConisForeignTyConisRecursiveTyContupleTyConAritytupleTyConSorttupleTyConBoxityisBoxedTupleTyContyConAssoc_maybe isTyConAssocisInjectiveTyConisClosedSynTyConisDataFamilyTyConisSynFamilyTyCon isFamilyTyConisEnumerationTyConisGadtSyntaxTyConisDecomposableTyCon isSynTyConisProductTyConunwrapNewTyCon_maybe isNewTyConisDistinctAlgRhsisDistinctTyCon isDataTyCon isAlgTyConisUnLiftedTyCon isPrimTyConmakeTyConAbstractisAbstractTyConmkPromotedTyConmkPromotedDataCon mkSynTyConmkLiftedPrimTyCon mkKindTyCon mkPrimTyConmkForeignTyCon mkTupleTyCon mkClassTyCon mkAlgTyCon mkFunTyCon primRepSizeWisImplicitCoAxiom coAxiomRHS coAxiomLHS coAxiomTyVars coAxiomName coAxiomArity isNoParentvisibleDataCons tyConArity tyConCType tyConTyVars tyConExtName FieldLabel AbstractTyConDataFamilyTyConis_enum data_cons DataTyConnt_co nt_etad_rhsnt_rhsdata_conNewTyCon AlgTyConRhs NoParentTyCon ClassTyConAssocFamilyTyCon FamInstTyCon TyConParent SynonymTyConSynFamilyTyCon SynTyConRhsco_ax_implicit co_ax_rhs co_ax_lhs co_ax_tvs co_ax_name co_ax_uniqueCoAxiomVoidRepPtrRepIntRepWordRepInt64Rep Word64RepAddrRepFloatRep DoubleRepPrimRep PackageConfig#installedPackageInfoToPackageConfig#packageConfigToInstalledPackageInfopackageConfigId mkPackageIddefaultPackageConfig PrelNames wordTyConNameRdrNamepprNameProvenanceisExplicitItemimportSpecModule importSpecLoc qualSpecOK unQualSpecOK transformGREsfindLocalDupsRdrEnvmkGlobalRdrEnvplusGlobalRdrEnvunQualOK isLocalGREpickGREsgetGRE_NameQualifier_maybeslookupGRE_NamelookupGRE_RdrNameextendGlobalRdrEnvlookupGlobalRdrEnvpprGlobalRdrEnvglobalRdrEnvEltsemptyGlobalRdrEnvdelLocalRdrEnvListinLocalRdrEnvScopelocalRdrEnvEltselemLocalRdrEnvlookupLocalRdrOcclookupLocalRdrEnvextendLocalRdrEnvListextendLocalRdrEnvemptyLocalRdrEnv isExact_maybeisExact isOrig_maybeisOrig isQual_maybeisQualisUnqual isSrcRdrNameisRdrTc isRdrTyVar isRdrDataCon nameRdrName getRdrNamemkQual mkVarUnqualmkUnqualmkOrig mkRdrQual mkRdrUnqual demoteRdrNamesetRdrNameSpace rdrNameSpace rdrNameOccUnqualQualOrigExact LocalRdrEnv GlobalRdrEnvgre_provgre_pargre_nameGRE GlobalRdrEltNoParentParentIsParentLocalDefImported Provenanceis_itemis_declImpSpec ImportSpecis_dlocis_qualis_asis_mod ImpDeclSpecImpAllis_iloc is_explicitImpSome ImpItemSpec dataConNameisVanillaDataConNameSetfindUsesduUsesallUsesduDefsplusDUmkDUsusesOnlyemptyDUsdelFVsdelFVunitFVaddOneFVmkFVsplusFVplusFVsemptyFVs isEmptyFVsintersectsNameSetdelListFromNameSetintersectNameSet filterNameSet foldNameSetdelFromNameSet nameSetToList elemNameSet minusNameSetunionManyNameSets unionNameSetsaddOneToNameSetaddListToNameSet mkNameSet unitNameSet emptyNameSetisEmptyNameSetFreeVarsDefsUsesDefUseDefUseseqTyConmkBoxedTupleTy tyConName tyConUnique isTupleTyConisUnboxedTupleTyCon isFunTyCon seqVarSet fixVarSet subVarSetdisjointVarSetintersectsVarSetelemVarSetByKeydelVarSetByKeyextendVarSet_C filterVarSet sizeVarSet mapVarSet lookupVarSet foldVarSetmkVarSet isEmptyVarSet delVarSetList delVarSet minusVarSet elemVarSet varSetElems unionVarSets unionVarSetintersectVarSetextendVarSetList extendVarSet unitVarSet emptyVarSetIdSetTyVarSetCoVarSet noParenPredisPredTytypeKind substKiWitheqKind isExportedIdmustHaveLocalBinding isGlobalId isLocalVar isLocalIdisId isTcTyVarisTKVarisTyVarsetIdNotExported setIdExported globaliseId setIdDetails lazySetIdInfomkExportedLocalVarmkCoVar mkLocalVar mkGlobalVar idDetailsidInfo mkKindVarsetTcTyVarDetailstcTyVarDetails mkTcTyVarmkTyVarupdateTyVarKindMupdateTyVarKind setTyVarKind setTyVarNamesetTyVarUnique tyVarKind tyVarName setVarType setVarName setVarUnique varUniqueTKVarTypeVarKindVarEvIdEvVarDictIdIpIdEqVarvarTypevarName pprPrefixName pprInfixName getOccString getSrcSpan getSrcLocpprNameDefnLoc pprDefinedAtpprModulePrefix stableNameCmphashNamemkLocalisedOccName localiseName tidyNameOcc setNameUnique mkFCallName mkSysTvNamemkSystemVarNamemkSystemNameAt mkSystemName mkWiredInNamemkExternalNamemkDerivedInternalNamemkInternalName isSystemName isVarName isValName isDataConName isTyConName isTyVarNamenameIsLocalOrFromnameModule_maybeisInternalNameisExternalNameisBuiltInSyntaxwiredInNameTyThing_maybe isWiredInName nameSrcSpan nameSrcLoc nameOccName nameUnique BuiltInSyntax UserSyntaxgetName getOccNameModule elemModuleSet moduleSetEltsextendModuleSet mkModuleSetemptyModuleSet foldModuleEnvisEmptyModuleEnv unitModuleEnvmoduleEnvToList moduleEnvElts moduleEnvKeysemptyModuleEnv mkModuleEnv mapModuleEnvlookupWithDefaultModuleEnvlookupModuleEnv plusModuleEnv delModuleEnvdelModuleEnvListplusModuleEnv_CextendModuleEnvList_CextendModuleEnvListextendModuleEnvWithextendModuleEnv elemModuleEnvfilterModuleEnv mainPackageIdthisGhcPackageIddphParPackageIddphSeqPackageId thPackageId rtsPackageId basePackageIdintegerPackageId primPackageIdstringToPackageId packageIdFS fsToPackageIdstablePackageIdCmp pprModulemkModulestableModuleCmpmoduleNameColonsmoduleNameSlashesmkModuleNameFS mkModuleNamemoduleNameString moduleNameFS pprModuleNamestableModuleNameCmpaddBootSuffixLocnaddBootSuffix_maybe addBootSuffix ml_obj_file ml_hi_file ml_hs_file ModLocation ModuleEnv ModuleSet ModuleNameEnvOccName startsConId startsVarId startsConSym startsVarSym isLexVarSym isLexConSym isLexVarId isLexConIdisLexSymisLexIdisLexVarisLexConisTupleOcc_maybe mkTupleOcc tidyOccNameinitTidyOccEnvemptyTidyOccEnv mkMethodOcc mkDFunOcc mkInstTyTcOcc mkLocalOccmkSuperDictSelOccmkDataConWorkerOccmkPDatasDataConOccmkPDataDataConOccmkPDatasTyConOccmkPDataTyConOccmkPReprTyConOcc mkPADFunOcc mkVectIsoOccmkVectDataConOccmkVectTyConOcc mkVectOcc mkDataCOcc mkDataTOccmkGenRComkGen1RmkGenRmkGenSmkGenCmkGenD mkGenOcc2 mkGenOcc1 mkMaxTagOcc mkTag2ConOcc mkCon2TagOcc mkEqPredCoOcc mkInstTyCoOcc mkNewTyCoOccmkForeignExportOcc mkSpecOccmkIPOcc mkDictOccmkClassDataConOccmkDerivedTyConOccmkClassOpAuxOccmkGenDefMethodOccmkDefaultMethodOcc mkWorkerOccmkDataConWrapperOccisDerivedOccNamestartsWithUnderscore parenSymOccisSymOcc isDataSymOcc isDataOccisValOccisTcOccisTvOccisVarOccsetOccNameSpace occNameStringintersectsOccSetintersectOccSet isEmptyOccSet foldOccSet occSetElts elemOccSet minusOccSetunionManyOccSets unionOccSetsextendOccSetList extendOccSetmkOccSet unitOccSet emptyOccSet filterOccEnvdelListFromOccEnv delFromOccEnv mkOccEnv_C mapOccEnvextendOccEnv_AccextendOccEnv_C plusOccEnv_C plusOccEnv occEnvElts foldOccEnv elemOccEnvmkOccEnv lookupOccEnvextendOccEnvList extendOccEnv unitOccEnv emptyOccEnv demoteOccName mkClsOccFSmkClsOcc mkTcOccFSmkTcOcc mkTyVarOccFS mkTyVarOcc mkDataOccFS mkDataOcc mkVarOccFSmkVarOcc mkOccNameFS mkOccName pprOccNamepprNameSpaceBriefpprNonVarNameSpace pprNameSpaceisValNameSpaceisVarNameSpace isTvNameSpaceisTcClsNameSpaceisDataConNameSpacetvName srcDataNamedataName tcClsNameclsNametcName NameSpace occNameFS occNameSpaceoccName HasOccNameOccEnvOccSet TidyOccEnvUniqSet uniqSetToList lookupUniqSetisEmptyUniqSet sizeUniqSet filterUniqSetelemUniqSet_DirectlyelementOfUniqSet mapUniqSet foldUniqSetintersectUniqSets minusUniqSetunionManyUniqSets unionUniqSetsdelListFromUniqSetdelOneFromUniqSet_DirectlydelOneFromUniqSetaddListToUniqSetaddOneToUniqSet_CaddOneToUniqSet mkUniqSet unitUniqSet emptyUniqSetUniqFMjoinUFM ufmToListeltsUFMkeysUFMlookupWithDefaultUFM_DirectlylookupWithDefaultUFMlookupUFM_Directly lookupUFMsplitUFMelemUFM_DirectlyelemUFMsizeUFMfilterUFM_Directly filterUFMmapUFM_DirectlymapUFMfoldUFM_DirectlyfoldUFMintersectUFM_C intersectUFMminusUFM plusUFM_CplusUFMdelFromUFM_DirectlydelListFromUFM delFromUFMadjustUFM_Directly adjustUFMaddListToUFM_C addToUFM_Acc addToUFM_CaddToUFM_DirectlyaddListToUFM_Directly addListToUFMaddToUFMalterUFM listToUFM_ClistToUFM_Directly listToUFMunitDirectlyUFMunitUFM isNullUFMemptyUFM DriverPhasesisHsBoothscSourceString HsSrcFile HsBootFile ExtCoreFile HscSource vanillaIdInfo coVarDetails pprIdDetails IdDetails UniqSupply lazyMapUs getUniqueUsgetUs lazyThenUsinitUs_initUstakeUniqFromSupplyuniqsFromSupplyuniqFromSupplylistSplitUniqSupplysplitUniqSupplymkSplitUniqSupplyUniqSM getUniquesM getUniqueMgetUniqueSupplyM MonadUniqueUnique getUnique UniquableintegralFractionalLitnegateFractionalLit isEarlyActiveisAlwaysActive isNeverActive isActiveInisActivesetInlinePragmaRuleMatchInfosetInlinePragmaActivationinlinePragmaRuleMatchInfoinlinePragmaActivationinlinePragmaSatisAnyInlinePragmaisInlinablePragmaisInlinePragmaisDefaultInlinePragmadfunInlinePragmainlinePragmaSpecneverInlinePragmaalwaysInlinePragmadefaultInlinePragmaisEmptyInlineSpec isFunLike isConLikefailed succeeded successIfisMarkedStrictisMarkedUnboxedisBanged zapFragileOccisOneOcc isDeadOccisStrongLoopBreakerisWeakLoopBreakerweakLoopBreakerstrongLoopBreaker notOneBranch oneBranch notInsideLam insideLam seqOccInfoisNoOcc tupleParensboxityNormalTupleSorttupleSortBoxity boolToRecFlagisNonRecisRecisBoxed isTopLevel isNotTopLevel compareFixity funTyFixity negateFixity defaultFixity maxPrecedenceinitialVersion bumpVersionArityRepArity Alignment IsFunctionIsDataFunctionOrData WarningTxt DeprecatedTxtRuleNameFixityInfixLInfixRInfixNFixityDirectionTopLevel NotTopLevel TopLevelFlagBoxedUnboxedBoxity Recursive NonRecursiveRecFlag isSafeOverlap NoOverlap OverlapOk Incoherent OverlapFlag BoxedTuple UnboxedTupleConstraintTuple TupleSorttoEPfromEPEP NoOccInfoIAmDeadOneOccIAmALoopBreakerInterestingCxt InsideLam OneBranchHsNoBangHsStrictHsUnpackHsUnpackFailed HsNoUnpackHsBang MarkedStrictNotMarkedStrictStrictnessMarkNoDM VanillaDM GenericDM DefMethSpec SucceededFailed SuccessFlagPhaseNumPhase InitialPhase CompilerPhase NeverActive AlwaysActive ActiveBefore ActiveAfter ActivationConLikeFunLike RuleMatchInfoinl_ruleinl_actinl_sat inl_inline InlinePragmaInline InlinableNoInlineEmptyInlineSpec InlineSpecfl_valuefl_textFL FractionalLitSrcLoc isSubspanOfspansleftmost_largestleftmost_smallest rightmost cmpLocated eqLocatedaddCLoc combineLocsmkGeneralLocatednoLocgetLocunLoc showUserSpansrcSpanFileName_mayberealSrcSpanEndrealSrcSpanStart srcSpanEnd srcSpanStart srcSpanEndColsrcSpanStartColsrcSpanEndLinesrcSpanStartLine isOneLineSpan isGoodSrcSpancombineSrcSpans mkSrcSpan mkRealSrcSpanrealSrcLocSpan srcLocSpanmkGeneralSrcSpanwiredInSrcSpan noSrcSpan sortLocated advanceSrcLoc srcLocCol srcLocLine srcLocFilemkGeneralSrcLocinteractiveSrcLocgeneratedSrcLocnoSrcLoc mkRealSrcLocmkSrcLoc RealSrcLoc UnhelpfulLoc srcSpanFile RealSrcSpan UnhelpfulSpanSrcSpan GenLocatedLocated RealLocatedTyThingPredType OutputablepprDebugAndThenassertPprPanic warnPprTracepprPanicFastIntpprDefiniteTracepprTrace pprPgmErrorpprSorrypprPanicplural speakNTimesspeakNOfspeakNspeakNth intWithCommasquotedListWithOr pprQuotedList interpp'SP interppSP pprWithCommaspprFastFilePath pprInfixVar pprPrefixVar pprHsString pprHsCharkeywordboldcoloured colBinder colDataConcolCoerccolTypeppUnlessppWhen punctuatehangfcatfsepcatsepvcathsephcat$+$$$<+><>nestrbracelbracerbracklbrackrparenlparendot underscorespaceequalscoloncommasemidarrowarrowdcolon blankLinequotescparen paBrackets angleBrackets doubleQuotesquotebracketsbracesparensrationaldoublefloatintegerintptextftexttextcharempty docToSDocshowPpr showSDocDebugshowSDocDumpOneLine showSDocDumpshowSDocUnqualshowSDocForUsershowSDocOneLinerenderWithStyleshowSDoc mkCodeStylepprCode printForAsm printForCprintForUserPartWay printForUser ifPprDebug userStyle debugStyle dumpStyleasmStyle codeStyle qualModulequalNamesdocWithPlatformsdocWithDynFlags getPprStyle pprSetDepth pprDeeperList pprDeeperwithPprStyleDoc withPprStyleinitSDocContextcmdlineParserStyle mkUserStyledefaultErrStyle mkErrStyledefaultDumpStyledefaultUserStyle neverQualify alwaysQualifyPprStyleCStyleAsmStyle CodeStyle AllTheWayPartWayDepth NameUnqualNameQualNameNotInScope1NameNotInScope2 QualifyNamePrintUnqualifiedrunSDoc PprColourpprPrecppr LambdaBindCaseBindLetBind BindingSite pprInfixOcc pprPrefixOccpprBndrOutputableBndrtracingDynFlagstargetPlatform pprUserLengthpprCols nameModule FastStringfsLitsLitlengthLSunpackLitString mkLitString mkLitString#hPutFSgetFastStringTablenilFS uniqueOfFSconsFStailFSheadFSconcatFSappendFS zEncodeFSbytesFSunpackFSnullFS hasZEncoding isZEncodedlengthFS mkZFastStringmkFastStringByteList mkFastStringmkFastStringForeignPtrmkZFastStringBytesmkFastStringBytes mkFastString#encbufn_charsn_bytesuniq LitStringUtil hashStringcharToCabstractDataTypeabstractConstrreslashparseSearchPath escapeSpacessplitLongestPrefixmodificationTimeIfExistsgetModificationUTCTimedoesDirNameExistmaybeReadFuzzy maybeRead readRationaltoArgs toCmdArgsgetCmdlooksLikeModuleNameglobalM consIORefglobalseqList unzipWith fuzzyLookup fuzzyMatch removeSpacescmpList eqMaybeByeqListBythenCmpisEqualsplitsnocViewdropTail splitAtListdropListtakeListcountall2foldl2transitiveClosureminWithsortWithisn'tInisInonlynotNull isSingleton singleton compareLength equalLength listLengthCmplengthIs lengthAtLeast lengthExceedsatLengthnOfThem mapAccumL2 mapAndUnzip3 mapAndUnzipmapSndmapFststretchZipWithzipLazy zipWith4Equal zipWith3Equal zipWithEqualzipEqual splitEithers partitionWith filterOutfirst3MfirstMuncurry3third3thirdOf3sndOf3fstOf3nTimesisDarwinTargetisWindowsTarget isWindowsHostisDynamicGhcLibghciTablesNextToCode ncgDebugIsOn debugIsOn ghciSupportedSuffixForwards Backwards assertPanic panicFastIntpgmErrorsorrypanic moduleNamemodulePackageIdpackageIdString ModuleName PackageIdSDoc MonadUtilsliftIO4liftIO3liftIO2liftIO1 ConstantstARGET_MAX_INT FiniteMapfoldRightWithKey foldRight deleteListinsertListWith insertList FastTypes maxFastInt minFastInt castFastPtrpUnboxpBox eqFastCharfastChrfastOrdcUnboxcBox_CLIT bitOrFastInt bitAndFastIntshiftRAFastIntshiftRLFastIntshiftR_FastInt shiftLFastInt negateFastInt quotFastIntiUnboxiBox_ILITFastIntFastCharFastPtr showCrumbhermitC_bindings hermitC_depth hermitC_path AbsolutePathhermitC_globalRdrEnvhermitC_coreRulesaddHermitBinding$fExtendPathHermitCCrumb$fReadPathHermitCCrumb$fAddBindingsExtendContext$fAddBindingsSnocPath$fHasGlobalRdrEnvHermitC$fHasCoreRulesHermitC$fReadBindingsHermitC$fBoundVarsHermitC$fAddBindingsHermitC$fHasGlobalRdrEnvOccEnv$fHasCoreRules[]$fBoundVarsUniqFM$fInjectionCoercionCoreTC$fInjectionTypeCoreTC$fInjectionExprCoreTC$fInjection(,,)CoreTC$fInjectionCoreDefCoreTC$fInjectionBindCoreTC$fInjectionCoreProgCoreTC$fInjectionModGutsCoreTC$fInjectionTyCoCoreTC$fInjectionCoreCoreTC$fInjectionCoercionTyCo$fInjectionTypeTyCo$fInjectionExprCore$fInjection(,,)Core$fInjectionCoreDefCore$fInjectionBindCore$fInjectionCoreProgCore$fInjectionModGutsCoreputStash runHermitMnewName$fHasDynFlagsHermitM$fMonadThingsHermitM$fMonadUniqueHermitM$fMonadIOHermitM$fMonadCatchHermitM$fMonadHermitM$fApplicativeHermitM$fFunctorHermitM GHC.TypesInt$fWalkercCoreTC $fWalkercTyCo$fWalkercCoercion $fWalkercType $fWalkercCore<$><*>Language.KURE.PathfinderuniquePrunePathToT uniquePathToToneNonEmptyPathToT onePathToT prunePathsToTpathsToTacceptLocalPathTexposeLocalPathTwithLocalPathT WithLocalPathLanguage.KURE.WalkersummandIsTypeT oneLargestT allLargestT oneLargestR anyLargestR allLargestR testPathT localPathT localPathRpathTpathR repeatPathL exhaustPathL localPathLpathL innermostRprunetdRonebuRonetdRanyduRanybuRanytdRallduRallbuRalltdR collectPruneTcollectTcrushbuTcrushtdTprunetdTonebuTonetdTfoldbuTfoldtdTchildRchildT childrenTchildLoneRanyRoneTallTallRWalkerLanguage.KURE.LensprojectLinjectLpureLbidirectionalLcatchLfailL testLensTfocusTfocusRlenslensTLensLanguage.KURE.ExtendableContext extendContext extraContext baseContext ExtendContext lastCrumbTabsPathT lastCrumbsnocPathToPathpathToSnocPathPathSnocPath@@ ExtendPathabsPathReadPath#Language.KURE.Combinators.Translate unwrapOneRwrapOneR unwrapAnyRwrapAnyRguardTjoinTcatchesTrepeatRchangedR changedByRtryR accepterRacceptRacceptWithFailMsgRorR>+>andRresultTreaderT sideEffectRmapT liftContextexposeTcontextTsuccessTidRAnyROneRLanguage.KURE.BiTranslate beforeBiR invertBiT whicheverR bidirectional backwardTforwardT BiTranslate BiRewriteLanguage.KURE.InjectionpromoteRpromoteWithFailMsgRextractRextractWithFailMsgRpromoteTpromoteWithFailMsgTextractTprojectTinjectTprojectMprojectWithFailMsgMinjectMprojectinject InjectionLanguage.KURE.TranslateconstT contextonlyT contextfreeTrewrite translateapply TranslateRewriteLanguage.KURE.MonadCatchliftAndCatchIOwithPatFailMsg prefixFailMsg setFailMsg modFailMsgnotMtestMattemptMmtryMtryMcatchesM<+ liftKureM fromKureMrunKureMcatchM MonadCatchKureMLanguage.KURE.Combinators.MonadunlessMwhenMifM guardMsgMguardMguardMsgLanguage.KURE.Combinators.Arrow parallelise serialiseconstant forkSecond forkFirstforkswaptoSndtoFstargumentresultfindIdMG findIdBuiltInData.Typeable.InternalTypeable Data.DynamicDynamictoTagEOrTagAndTagNotTag $fExtern[] $fExtern[]0 $fExtern[]1 $fExtern[]2 $fExtern[]3$fExternCoreString$fExternTranslate$fExternTranslate0$fExternSnocPath $fExternCrumb $fExternName$fExternTranslate1$fExternTranslate2$fExternTranslate3$fExternTranslate4$fExternBiTranslate$fExternTranslate5$fExternTranslate6 $fExternInt $fExternTagE $fExtern(->) $fTagCmdTag $fTagTagEcommas substTopBindR substAltR deShadowProgR idSpecRules bindSpecRules specRulesrulesToRewriteHgetHermitRules rules_helpmakeRuleaddCoreBindAsRuleoccurrenceAnalysisR inventNames shadowedBy shadowedByT replaceVar replaceVars alphaAltVarRalphaAltVarsWithRalphaLetNonRecRalphaLetNonRecVarsRalphaLetRecIdRalphaLetRecIdsWithRalphaProgConsNonRecRalphaProgConsRecIdRalphaProgConsRecIdsWithRwrongFormForAlpha ensureDepthTalt2ExpdFunExpr countBinderscollectNBinders checkEqualfoldaddAlpha foldMatchcompareBoundIds coreTCNodecoreNodecoreTCConstructorcoreConstructortypeConstructorcoercionConstructorbindingGroupOf bindingOfbinders bindersCore binderBind binderDef binderExpr binderTypebinderCoercion occurrenceOf varOccurrencevarOccurrenceExprvarOccurrenceTypevarOccurrenceCoercionrecognizedConsiderablesconsiderConstructstring2considerableunderConsideration testQueryhfocusRhfocusTTcharTstring TrationalTintegerTcnameTname Tsemicolon TquestionTdotTatTlambdaTarrowTstar Tcoloneqcolon TcoloncolonTcolonTeqThashTcbraceTobraceTcparenToparenTwildTlocal TexternalTnoteTcastTofTcaseTinTletTrecTforall CoreParseM mkIntExpr' lookupName retraction isErrorValTGHC.Err undefinedundefinedLocationfindUndefinedIdT errorLocation findErrorIdT fixFusionRule fixLocation findFixId caseFoldWildRseq isForcedIn caseFloatArgmatchingFreeIdTcaseInlineBinderR altVarsUnused castElimRcastElimUnsafeR<$multiBetaReduceRpush$fRenderCodeHTML DebugPrettyLaTeXASCII HermitMarkPopAttrPushAttrattrrenderSpecialFontspecialFontMap latexToStringlistify$fRenderCodeDebugPretty$fMonoidDebugPretty$fRenderSpecialDebugPretty$fRenderCodeASCII$fRenderCodeLaTeX$fRenderSpecialHTML $fMonoidHTML$fRenderSpecialLaTeX $fMonoidLaTeX$fRenderSpecialUnicode$fRenderSpecialASCII $fMonoidASCII$fRenderSpecialChar$fDefaultPrettyOptions$fBoundVarsPrettyC$fAddBindingsPrettyC$fExtendPathPrettyCCrumb$fReadPathPrettyCCrumb$fExternTranslateDocH$.idflipconst Data.TuplefstsndbasicCombinatorsbashHelpbashComponentswwFacwwFusionwwSplitwwAssAimpliesAssBwwAssBimpliesAssCwwAssAimpliesAssCwwAwwBwwC verifyWWAss verifyAssA verifyAssB verifyAssCwrapUnwrapTypeswwResultAssAimpliesAssBwwResultAssBimpliesAssCwwResultAssAimpliesAssC absRepTypes runInterp interpExpr fromDynList toBoxedList interpExpr' dynAppMsg$fFunctorInterp KernelStateMsgDoneReqfindWithErrMsgfind safeTakeTMVar SASTStorepathStack2PathspathStackToLenstestPathStackTget modFilter filterOptsRetExprRetEmptyRetAtom RetArrowType RetForAllRetAppRetLetRetLamretAppretAppsretLamretLet retForAll retArrowTypeisAtom normalExpr cleanParens normalParensnormalParensExceptApp parenExprparenExprExceptApp specialSymbolsymbolidTextcoTextcoCharcoSymbol castSymbolcoercionSymbolcoercionBindSymbol coKeywordtyChartyTexttySymbol typeSymboltypeBindSymbol typeOfSymbol typeArrowppSDocppVarvarColorppNameppLitTyppTyCon ppTyConCo ppBinderMode ppCoreDefppDef ppCoreExprR ppTypeModeR ppKindOrTypeRppCoercionModeR ppCoercionRppCoKind ppTypeSig $fMonadCLM$fMonadCatchCLM$fMonadTransCLM$fErrorCLException$fExternShellEffect$fExternMetaCommand$fExternQueryFun$fExternKernelEffect PrimScriptRScriptTranslateHCorePath ScriptPathScriptRewriteHCore ScopedScriptR ScriptPrimSc ScriptScopeUnscopedScriptRScriptUnsupported ScriptPrimUnScriptEndScopeScriptBeginScopeunscopedToScopedScriptR interpScriptRscopedScriptsToRewrite$fRenderCodeUnicodeTerminal$fMonoidUnicodeTerminal$fRenderSpecialUnicodeTerminal make_help help_command layoutTxtCompletionType AmbiguousCCommandCInlineC OccurrenceOfCRhsOfCBindingGroupOfC BindingOfC ConsiderCcatch cl_putStr cl_putStrLn fixWindow showWindowcompletionTypecompletionQuerysetRunningScriptbannergetTermDimensionsourCatchparseScriptCLM runScriptrunExprH lookupScriptputStrToConsole getNavCmdtickrunKrunSOInstRRFocusGuardrunOMeval catchContinue resetScopingrestoreScopingguard