|i˒      !"#$%&'()*+,-./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 pqrstuvwxyz{|}~ Safe-InferredThe LR class defines two functions, leftf and rightf, which should & produce different functorial values. The LRBase class defines two functions, leftb and rightb , which " should produce different values.    Safe-Inferred (Monadic zip but argument is not monadic  Unsafe zip (Combine two structures monadically only Generic equality ;Monadic generic equality (just for the sake of the monad!)       Safe-Inferred/Allows metavariables on either side of a rule. ;Recursively extends a type with a case for a metavariable. :Extends a pattern functor with a case for a metavariable. +Specifies a rule as a value of a datatype. &Returns the left-hand side of a rule. 'Returns the right-hand side of a rule. Constructs a metavariable.  ! ! ! ! Safe-Inferred"#$%&"#$%&$%"#& "#$%& Safe-Inferred) Unify an ' with an a. '()'()'()'() Safe-Inferred*+,-./01234 *+,-./01234 *+,-./41230*+,-./01234 Safe-Inferred*Count the number of recursive occurrences The type of the memo table Key used in memoisation table <#Comparing index of different types G+Apply the transformation to the given tree 4Look up the references using the original structure &Extract the subtree at the given path HEFind a set of insertions to transform the first into the second tree Pick the best edit &Pick the shortest of two lists lazily Lookup with a specific type !Lift a tree to an edit structure AExtend the paths of edits for the children with the child number =Try to apply as much edits to the edit structure as possible " to make the final edit smaller 'Replace a subtree in an edit structure 9Map a function with child index at a top-level structure Get the immediate children "Get all children with their paths ]56789:;<=>?@ABCDEFGHIJ56789:;<=>?@ABCDEFGHIJHG@ABDFEC?<=>89:;567IJN56789:;<=>?@ABCDFEGHIJNoneK%Derive data type with references and 8 instance. For a data type H N the name of the constructor for a reference is RefN, and the given H function is used to change the rest of the constructors and the data @ type name itself. For example, for the following definition:  & data Tree = Leaf Int | Bin Tree Tree  data TreeAST :: * -> * where  Tree :: TreeAST Tree ) $(deriveRefRep ''TreeAST (postfix "R")) &The following data type is generated: : data TreeR = LeafR Int | BinR TreeR TreeR | RefTree Path  instance HasRef TreeAST <Turn a record-constructor into a normal constructor by just  removing all the field names. 8Process the reified info of the index GADT, and extract B its constructor names, which are also the names of the datatypes  that are part of the family. 8Process the reified info of the index GADT, and extract  its type parameters. KLM     KLMKLMKLM       Safe-InferredNOPQRSTNOPQRSTOPQRSTNNOPQRST Safe-Inferred !NOPQRST NoneUVWXYZUVWXYZWXZYUVUVWXYZ None [\][\][\] [\] None*Count the number of recursive occurrences i"Apply the edits to the given tree 4Look up the references using the original structure &Extract the subtree at the given path j@Find a set of edits to transform the first into the second tree :Helper function for lookup with provided compare function Pick the best edit  &Pick the shortest of two lists lazily !&Lift a tree to a tree with references "=Try to apply as much edits to the edit structure as possible " to make the final edit smaller #'Replace a subtree in an edit structure $AExtend the paths of edits for the children with the child number %9Map a function with child index at a top-level structure &Get the immediate children '"Get all children with their paths N^_`ab()*+,-./0123cdefghij !"#$%&'kl456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY^_`abcdefghijkljidegfhc_`ab^klC^_`ab()*+,-./0123cdegfhij !"#$%&'kl456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY Nonem%Derive data type with references and _ instance. For a data type H N the name of the constructor for a reference is RefN, and the given H function is used to change the rest of the constructors and the data @ type name itself. For example, for the following definition:  & data Tree = Leaf Int | Bin Tree Tree & $(deriveRefRep ''Tree (postfix "R")) &The following data type is generated: : data TreeR = LeafR Int | BinR TreeR TreeR | RefTree Path  instance HasRef Tree mZ[no\]^_`abcdefghijmnomnomZ[no\]^_`abcdefghijNone p=It is in general not necessary to use the generic navigation 1 functions directly. The functions listed in the ` Interface' section  below are more user-friendly. wAAbstract type of context frames. Not required for the high-level  navigation functions. xBAbstract type of locations. A location contains the current focus A and its context. A location is parameterized over the family of 4 datatypes and over the type of the complete value. z:Start navigating a datastructure. Returns a location that 4 focuses the entire value and has an empty context. {)Move down to the leftmost child. Returns k if the  current focus is a leaf. |*Move down to the rightmost child. Returns k if the  current focus is a leaf. }Move up to the parent. Returns k if the current  focus is the root. ~#Move to the right sibling. Returns k if the current ! focus is the rightmost sibling. "Move to the left sibling. Returns k if the current  focus is the leftmost sibling. ;Return the entire value, independent of the current focus. ;Operate on the current focus. This function can be used to % extract the current point of focus. 4Update the current focus without changing its type. 4Update the current focus without changing its type. pqrstuvwxyz{|}~lmnopqrstpqrstuvwxyz{|}~xywpqrstuvz{|}~pqrstuvwxyz{|}~lmnopqrstNoneuuNone vw vwx !"#$%&&'()*+,-./01234567889:;<=>?@ABCDEFFGHIJKLMNOPPQRSTUVWXYZ[ \ ] ^ _ ` a b P P O N c U d e 7 E G H I J N O R S T Q U V W X Y Z [fghijklmnnopqrstuvONU:;<=>?@ABCDwxyz{|}~ v                                          ! " # $ % & ' ( )$*+,-./0123456transformations-0.1.1.0Generics.MultiRec.LRGenerics.MultiRec.HZip!Generics.MultiRec.Rewriting.RulesGenerics.MultiRec.OrdGenerics.MultiRec.Any-Generics.MultiRec.Transformations.ZipperState*Generics.MultiRec.Transformations.Explicit$Generics.MultiRec.Transformations.TH%Generics.MultiRec.Rewriting.Machinery.Generics.MultiRec.Transformations.RewriteRulesGenerics.Regular.Functions.GOrd)Generics.Regular.Transformations.Explicit#Generics.Regular.Transformations.THGenerics.Regular.Zipper-Generics.Regular.Transformations.RewriteRules,Generics.Regular.Transformations.ZipperStateGenerics.MultiRec.RewritingLRleftfrightfLRBaseleftbrightbleftrightsafeHeadHZiphzipMhziphzip'combinegeqgeq'BuilderTargetbasediagRuleSchemeMetavarExtRuleSpec:~>lhsRrhsRmetavarpfrule mergeSchemes insertMVarOrd1compare1HOrdhcomparegcompareAnymatchAny ZipperMonad ZipperStateupMonad downMonad leftMonad rightMonad updateMonad saveMonad loadMonadtopMonadnavigateNiceTransformation NiceInsertHasRefRefReptoReffromRefOrdIcompareIindexI TransformTransformation AnyInsertPathWithRefRefInRapplydifftoNiceTransformationfromNiceTransformation deriveRefRepprefixpostfixSubstRewriterewriteMmatchmatchM checkEqualinstinsertGOrdcomparefZippercmapfillfirstlastnextprevCtxLocenterdowndown'upleaveonupdateupdateM $fLRphi:.: $fLRphi:>:$fLRphiC $fLRphi:*: $fLRphi:+:$fLRphiU$fLRphiK$fLRphiI $fLRBase[] $fLRBaseBool $fLRBaseChar$fLRBaseInteger $fLRBaseInt $fHZipphi:.: $fHZipphiC $fHZipphi:>: $fHZipphi:*: $fHZipphi:+: $fHZipphiU $fHZipphiK $fHZipphiI$fBuilderphi(->)$fBuilderphiRuleSpec$fOrd1[] $fHOrdphi:.: $fHOrdphi:>: $fHOrdphiC $fHOrdphi:*: $fHOrdphi:+: $fHOrdphiU $fHOrdphiK $fHOrdphiI enterMonad moveMonad leaveMonadcountI MemoTableMemoKey lookupRefsextractpickBest pickShortest anyLookupannotateupdateChildPaths partialApplyreplacetmapN imChildren childrenPathsChildrenchildrenCountIMapNmapNExtractN extractN'SEq shallowEqMemorunMemorecMemoextractN$fChildrenphi:.:$fChildrenphi:>:$fChildrenphiC$fChildrenphi:*:$fChildrenphi:+:$fChildrenphiU$fChildrenphiK$fChildrenphiI$fCountIphi:.: $fCountIphiC$fCountIphi:>:$fCountIphi:*:$fCountIphi:+: $fCountIphiU $fCountIphiK $fCountIphiI $fMapNphi:.: $fMapNphiC $fMapNphi:>: $fMapNphi:*: $fMapNphi:+: $fMapNphiU $fMapNphiK $fMapNphiI$fExtractNphi:.:$fExtractNphiC$fExtractNphi:>:$fExtractNphi:*:$fExtractNphi:+:$fExtractNphiU$fExtractNphiK$fExtractNphiI $fSEqphi:.: $fSEqphiC $fSEqphi:>: $fSEqphi:*: $fSEqphi:+: $fSEqphiK $fSEqphiU $fSEqphiI $fOrdMemoKey $fEqMemoKeystripRecordNamesextractConstructorNamesextractParametersunAppextractFromBndr deriveDatas deriveDatamkCon typeVariables deriveHasRefmkFrommkTofromContoCon fromField fromFieldFuntoField toFieldFunfieldlrPlrE remakeName $fRewritephi$fGOrdS$fGOrdC $fGOrd:*: $fGOrd:+:$fGOrdU$fGOrdK$fGOrdI lookupWithbestwithRefs $fChildrenS $fChildrenC $fChildren:*: $fChildren:+: $fChildrenU $fChildrenK $fChildrenI $fCountIS $fCountIC $fCountI:*: $fCountI:+: $fCountIU $fCountIK $fCountII$fMapNS$fMapNC $fMapN:*: $fMapN:+:$fMapNU$fMapNK$fMapNI $fExtractNS $fExtractNC $fExtractN:*: $fExtractN:+: $fExtractNU $fExtractNK $fExtractNI$fSEqS$fSEqC$fSEq:*:$fSEq:+:$fSEqK$fSEqU$fSEqI$fFunctorWithRef deriveInsttyVarBndrToName fromField'toField'dataDeclToType Data.MaybeNothing impossible $fZipperS $fZipperC $fZipper:*: $fZipper:+: $fZipperU $fZipperK $fZipperI $fFunctorCtx $fRewritea