nO[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None3JK      None!"2346<=EHJKM oIt is in general not necessary to use the generic navigation functions directly. The functions listed in the `` Interface'') section below are more user-friendly. YAbstract type of context frames. Not required for the high-level navigation functions. Abstract type of locations. A location contains the current focus and its context. A location is parameterized over the family of datatypes and over the type of the complete value. oStart navigating a datastructure. Returns a location that focuses the entire value and has an empty context. )Move down to the leftmost child. Returns # if the current focus is a leaf. *Move down to the rightmost child. Returns # if the current focus is a leaf. Move up to the parent. Returns % if the current focus is the root. #Move to the right sibling. Returns 2 if the current focus is the rightmost sibling. "Move to the left sibling. Returns 1 if the current focus is the leftmost sibling. ;Return the entire value, independent of the current focus. aOperate 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. +     None!"234=BJKM)"Apply the edits to the given tree 4Look up the references using the original structure *@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 &Extract the subtree at the given path 1Map a function over the child in a specific path ,Version of |mapP| for trees with references Get the immediate children "Get all children with their paths i !"     #$%&'()*+, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM !"#$%&'()*+,*)$%'&(# !"+,[ !"     #$%'&()*+, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM Safe-Inferred !"234=HJKM -./0123456-. -.6543210/ -./0123456$(c) 2008--2009 Universiteit Utrecht BSD3 generics@haskell.org  experimental  non-portable  Safe-Inferred!"2346<=HJKM7oIt is in general not necessary to use the generic navigation functions directly. The functions listed in the `` Interface'') section below are more user-friendly. >YAbstract type of context frames. Not required for the high-level navigation functions. BAbstract type of locations. A location contains the current focus and its context. A location is parameterized over the family of datatypes and over the type of the complete value. ,789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab789:;<=>?@ABCDEFGHIJKLM,BC?A@>ba`LK_JI^H]G\F[EZDYXW789:;<=VUTSRQPONM789:;<=>?A@BCMNOPQRSTUVWXYZD[E\F]G^H_JI`LKabNone!"2346=BHJKMiAInsertions contain a path of where to insert, and what to insert k)Closed functors extended with references l6The type of pattern functors extended with references qAA direction points to a single recursive position in a datatype. rA path is a list of connecting directions on a datatype. This is equivalent to a zipper context where the recursive positions are ignored (set to a constant type). sConcatenate two paths ,cdefghijklmnopqrstuvwxyz{|}~#>?@ADEFGHIJKLcdefghijklmnopqrstuvwx0rqlompnkijsgheftuvcd~}|{zywx?A@>$cdefghijklompnqrstuvwxyz{|}~None!"2346=HJKM"Get all children with their paths  None!"'(2346=HJKM-NOPQRS'#NOPQRS None!"2346=HJKM    Safe-Inferred !"2346=HJKM   None!"&'(2346=HJKM 1Transformations are just sequences of insertions T%A constraint synonym for convenience +Apply the transformation to the given tree U4Look up the references using the original structure V&Extract the subtree at the given path EFind a set of insertions to transform the first into the second tree WUpdate insert location XPick the best edit Y&Pick the shortest of two lists lazily Z!Lookup a child with a given type [!Lift a tree to an edit structure \`Try to apply as much edits to the edit structure as possible to make the final edit smaller ]^TUVWXYZ[\_`abcdefg]^TUVWXYZ[\_`abcdefgh   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkkl01m2no3pqrstuvwxyz{|}~   / 4 5FHKLMNOstef89ghijoq     :;=?>A !"#$% . & ' ( ) * + , - . / 0 1 2 3 45transformations-0.2.0.0Generics.Regular.Functions.GOrdGenerics.Regular.Zipper%Generics.Regular.Transformations.MainGenerics.MultiRec.CountIsGenerics.MultiRec.Zipper&Generics.MultiRec.Transformations.Path*Generics.MultiRec.Transformations.Children+Generics.MultiRec.Transformations.MemoTable-Generics.MultiRec.Transformations.ZipChildrenGenerics.MultiRec.ShallowEq&Generics.MultiRec.Transformations.MainGOrdcomparefgcompare$fGOrdS$fGOrdC $fGOrd:*: $fGOrd:+:$fGOrdU$fGOrdK$fGOrdIZippercmapfillfirstlastnextprevCtxLocenterdowndown'uprightleftleaveonupdateupdateMNiceTransformationHasRefRefReptoReffromRef TransformTransformationWithRefRefInRPathapplydifftoNiceTransformationfromNiceTransformationCountIscountIs $fCountIs:*: $fCountIs:+: $fCountIs:>: $fCountIsC $fCountIsU $fCountIsK $fCountIs:.: $fCountIsIcmapACtxsPushEmptyCCCTagCIdCCMCCLC2C1CRCL impossible $fZipperphiC$fZipperphi:>:$fZipperphi:.:$fZipperphi:.:0$fZipperphi:*:$fZipperphi:+: $fZipperphiU $fZipperphiK $fZipperphiI$fHFunctorphiLoc$fHFunctorphiCtxs$fHFunctorphiCtxTFCo:R:CtxCbrixTFCo:R:Ctx:>:brixTFCo:R:CtxIbrixTFCo:R:Ctx:.:brixTFCo:R:Ctx:.:brix0TFCo:R:Ctx:*:brixTFCo:R:Ctx:+:brixTFCo:R:CtxUbrixTFCo:R:CtxKbrixMapPmapP'ShowPath showsPrecPathConIndexCIInsertHWithRefunRefunInRDir<.>showsPrecPathCshowWRmapPmapPR mapMwithI $fMapPphi:.: $fMapPphi:.:0 $fMapPphi:>: $fMapPphiC $fMapPphi:*: $fMapPphi:+: $fMapPphiI $fMapPphiK $fMapPphiU $fShowInsert $fShowHFix $fShowCtxs $fShowPath:.:$fShowPath:.:0 $fShowPathI $fShowPathU $fShowPathK $fShowPathC $fShowPath:>: $fShowPath:*: $fShowPath:+:$fShowConIndexChildrenchildren allChildren$fChildrenphi:.:ix$fChildrenphi:.:ix0$fChildrenphi:>:ix$fChildrenphiCix$fChildrenphi:*:ix$fChildrenphi:+:ix$fChildrenphiUix$fChildrenphiKix$fChildrenphiIix$fChildrenphiIix0GetChildrenTable getChTable ChildrenTable childrenTable ChildTable EmptyMemo emptyMemoMemoLookuplookupMTinsertMTProxyMemValMemKeyMemCell MemoTable'TypeTwoOne MemoTableHMapHListHConsHNilIxsrunMemorecMemo$fGetChildrenTablephi:ix$fGetChildrenTablephi:t$fGetChildrenTablephi[]ix$fChildrenTablephitop:$fChildrenTablephitop:0$fChildrenTablephitop[]$fEmptyMemophitop:$fEmptyMemophitop[]$fLookupphi:ix $fLookupphi:t$fLookupphi[]ix ZipChildren zipChildren zipChildrenM$fZipChildrenphi:.:$fZipChildrenphi:.:0$fZipChildrenphi:>:$fZipChildrenphiC$fZipChildrenphi:*:$fZipChildrenphi:+:$fZipChildrenphiU$fZipChildrenphiK$fZipChildrenphiISEq shallowEq $fSEqphi:.: $fSEqphiC $fSEqphi:>: $fSEqphi:*: $fSEqphi:+: $fSEqphiK $fSEqphiU $fSEqphiIbase Data.MaybeNothingCS $fZipperS $fZipperC $fZipper:*: $fZipper:+: $fZipperU $fZipperK $fZipperI $fFunctorCtx TFCo:R:CtxSr TFCo:R:CtxCr TFCo:R:CtxIrTFCo:R:Ctx:*:rTFCo:R:Ctx:+:r TFCo:R:CtxUr TFCo:R:CtxKr lookupRefs lookupWithbest pickShortestwithRefs partialApplyreplaceupdateChildPathsextract imChildren childrenPathsExtractPextractPMemoKeyspaces intersperse$fZipChildrenS$fZipChildrenC$fZipChildren:*:$fZipChildren:+:$fZipChildrenU$fZipChildrenK$fZipChildrenI $fChildrenS $fChildrenC $fChildren:*: $fChildren:+: $fChildrenU $fChildrenK $fChildrenI$fMapPS$fMapPC $fMapP:*: $fMapP:+:$fMapPU$fMapPK$fMapPI $fExtractPS $fExtractPC $fExtractP:*: $fExtractP:+: $fExtractPU $fExtractPK $fExtractPI$fSEqS$fSEqC$fSEq:*:$fSEq:+:$fSEqK$fSEqU$fSEqI $fOrdMemoKey $fEqMemoKey $fShowFix$fShow[]$fFunctorWithRefTFCo:R:MemCellTwophitoptTFCo:R:MemCellOnephitoptTFCo:R:MemoTable'xphitop:TFCo:R:MemoTable'xphitop[]TFCo:R:HMaphfg:TFCo:R:HMaphfg[] updatePathpickBest childLookupannotateExtractextract' $fExtract:.: $fExtract:.:0 $fExtractC $fExtract:>: $fExtractK $fExtractU $fExtractI $fExtract:*: $fExtract:+: