}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF 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{|}~ non-portable experimentalgenerics@haskell.orgBAbstract 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. AAbstract type of context frames. Not required for the high-level  navigation functions.  =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. :Start navigating a datastructure. Returns a location that 4 focuses the entire value and has an empty context. ;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.        !A navigation step in a fixpoint. A location within a fixpoint. )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  if the current ! focus is the rightmost sibling. "Move to the left sibling. Returns  if the current  focus is the leftmost sibling. ?Move through all positions in depth-first left-to-right order. ?Move through all positions in depth-first right-to-left order. ;Return the entire value, independent of the current focus.   ;Given a witness, convert the value of that type to String.  $A value of some type in data family s wrapped in an f, together with its witness. $A value of some type in data family s, together with its witness.  Helper constructor. ! Unify an  with an a. "Helper constructor. # Unify an  with an f a. $ Unwrap an  and pass it to a function. %#Removes the value from its functor f.  !"#$%  !"#%$  !"#$%&7Captures hints for the exploration of annotated trees. '(#Whether the current focus matches. )!Whether to explore the children. *)Whether to explore further to the right. &'()*&'()*&'()*'()*+,A fixpoint of a data family s annotated with an xM at every recursive position, with existentially quantified top-level index. -)A functor with fully annotated children. .A fully annotated tree. /3Supply a tree with an annotation at the top level. 0?Removes all annotations from a recursively annotated fixpoint. 15Collects the direct children of a functor in a list. 2PFlatten an annotated tree to a list of subtrees coupled with their annotations. 3;Yield all subtrees whose annotation matches the predicate. 4<Flatten an annotated tree and print all subtrees to stdout. 5;Recursively yield all annotations in the tree in preorder. 6-Extract the annotation of the current focus. 7HExplore an annotated tree. Starting with the root of the tree, at each B position the annotation at that position is matched against the  '&) predicates and all the selections where ( was  positive are collected. The * and ) allow pruning : of the tree, preventing entire parts from being visited. 8GFind the deepest node in an annotated tree that matches the predicate. ; Starting with the root, the predicate tells whether a node' s annotation 1 matches. If so, the search continues at the node's children and the node's J siblings to the right are excluded from further exploration. If no child ' matches, the node itself is returned. +,-./012345678.-/,012345+678+,-./012345678 9$Yields a value with its annotation. :The type of the annotation. ;3Yielded values have types in this datatype family. <9Monads that allow yielding recursively annotated values. =@The Yield transformer. Allows yielding generic values in family fam with annotations of type x. >Yield over the identity monad. ?@AB 9:;<=>?@AB <;:9=>BA@? 9:;<;:9=>?@ABCExcept is like Either. but is meant to be used only in applicative D computations. When two exceptions are sequenced, their sum (using  ) is computed. DECDECEDCEDDE F"Algebras for error catamorphisms. GCoalgebras for anamorphisms. HAlgebras for catamorphisms. IFixpoint of functors. JKL4Reduces a tree to a value according to the algebra. M;Constructs a tree from a value according to the coalgebra. N Apply a transformation to a tree's direct children. ORReduces a tree to a value according to the algebra, propagating potential errors. FGHIJKLMNO IJKNHLGMFO FGHIJKJKLMNO PCaptures navigation steps in a TS. Its ' instance specifies the identity step () and step composition (). QRSkA quasi-zipper, meant for O(1), fixed-memory stepping through a tree structure, but not meant for updates. TU"The current focus of this zipper. VMove up to the parent. WMove to the left sibling. XMove to the right sibling. Y#Move down into the leftmost child. ZMove into the root of the fixed point. The returned zipper builds a data structure with optimal sharing and fixed memory usage. For example, zLeft >=> zRight5 (if successful) returns to the same node in memory. [LWalk back up to the root of the fixed point and leave the zipper structure. \!Move down into a specific child. ]GTraverses the tree in preorder, yielding all possible tree selections. PQRSTUVWXYZ[\]STUVWXYZ[\]PQRPQRQRSTUVWXYTUVWXYZ[\] ^)A functor with fully annotated children. _A fully annotated tree. `Lifted annotation of functors. ab3Supply a tree with an annotation at the top level. c/Yields the annotation at the root of the tree. d!Recursively discard annotations. eIReduces a tree to a value according to the algebra, collecting potential K errors. The errors are combined with the annotations in the tree at the + positions at which the errors occurred. fHExplore an annotated tree. Starting with the root of the tree, at each B position the annotation at that position is matched against the  '&) predicates and all the selections where ( was  positive are collected. The * and ) allow pruning : of the tree, preventing entire parts from being visited. gGFind the deepest node in an annotated tree that matches the predicate. ; Starting with the root, the predicate tells whether a node' s annotation 1 matches. If so, the search continues at the node's children and the node's J siblings to the right are excluded from further exploration. If no child ' matches, the node itself is returned. ^_`abcdefg `a_c^bdefg ^_`aabcdefg h(An error algebra over pattern functors. iHType family that converts pattern functors to convenient algebra types. jkDConverts convenient algebras to algebras that are able to work with  pattern functors. lIReduces a tree to a value according to the algebra, collecting potential K errors. The errors are combined with the annotations in the tree at the + positions at which the errors occurred. m?For constructing algebras that are made of nested pairs rather D than n-ary tuples, it is helpful to use this pairing combinator. hijklmihkjlmhijkjlm nEA structural selection expressed as a textual selection. The margins A indicate the whitespace directly around the selected structure. opqr?A simple textual selection: starting offset and ending offset, $ respectively. Offsets are 0-based. sA Bounds'L inner range does not include the whitespace around the selected structure. tA Bounds'D outer range includes the whitespace around the selected structure. u7Tells whether the offset falls within the given range. v?Tells whether the first range is enclosed by the second range. wHA range is within certain bounds if its left offset is within the bounds' 6 left margin and its right offset is within the bounds' right margin. xrangesInBounds b yields all those ranges r for which  rangeInBounds r b. y4A measure for the dissimilarity between two ranges. 3distRange (l1, r1) (l2, r2) = |l1 - l2| + |r1 - r2| nopqrstuvwxy rnopqstuvwxy nopqopqrstuvwxy zA parser that works on symbols coupled with token information. The state maintains the current position in the stream. This position is the range of whitespace between two tokens. {=Symbols form input for parsers. Minimal complete definition: |. |/Unparses a symbol, converting it back to text. }7Yields the size of a symbol. Default implementation is length . unparse. ~Given a predicate that tells what tokens to discard, keeps only the meaningful tokens and couples them with position information. )Yield the current position in the input. )Recognise a symbol matching a predicate. Recognise a specific symbol. z{|}~{|}~zz{|}|}~>Find the deepest node whose bounds match the given range. See w. ?Find the deepest node whose bounds contain the given position. Find all selections in the tree and return their bounds. The tree is traversed in preorder. Consequently, the bounds are returned in lexicographical order. repairBy cost tree range/ finds the the closest valid text selection to range, where  ''closest''/ is determined by the specified cost function.  Defined as  y. 'Move around in a tree according to the QP+, expressed in tree selections. Although a r is required as input, a ont is returned, providing information about all the valid text selections that would select the particular tree node. DGiven the left margin of a structure, asks the parser for the right J margin and wraps the position information around the root of the tree. GWrap an unnotated tree with position information from the parse state. "Parse right-recursive structures. !Parse left-recursive structures. 4A parser that yields its components, annotated with on. GWrap an unnotated tree with position information from the parse state. DGiven the left margin of a structure, asks the parser for the right J margin and wraps the position information around the root of the tree. "Parse right-recursive structures. !Parse left-recursive structures. >Find the deepest node whose bounds match the given range. See w.  Defined as  y. 'Move around in a tree according to the +, expressed in tree selections. Although a r is required as input, a ont is returned, providing information about all the valid text selections that would select the particular tree node.  !"#$%&'()*+,-..//01234566789:;<=>?@ABCDEFGHIJKLMNOPQRST U V W X Y Z [ \ ] ^ " " _   ` a b c d  + e f < = g g > h ? i F G j k l m i n o o p q r s t u v w x yz{|}~L  Annotations-0.1.3Annotations.MultiRec.ZipperAnnotations.MultiRec.ZipperFixAnnotations.MultiRec.ShowFamAnnotations.MultiRec.AnyAnnotations.ExploreHintsAnnotations.MultiRec.AnnotatedAnnotations.MultiRec.YieldAnnotations.ExceptAnnotations.F.FixpointsAnnotations.F.ZipperAnnotations.F.AnnotatedAnnotations.MultiRec.ErrorAlgAnnotations.BoundsAnnotations.BoundsParserAnnotations.F.PositionalAnnotations.F.ParserCombinators&Annotations.MultiRec.ParserCombinatorsAnnotations.MultiRec.PositionalLocEmptyPushCtxsCtxprevnextlastfirstfillcmapAZipperenteronupdateNav FixZipperdowndown'uprightleftdfnextdfprevleaveShowFamshowFamAnyFAnymkAnymatchAnymkAnyF matchAnyF$? unwrapAnyF ExploreHints matchHere exploreDown exploreRight AnnZipper AnyAnnFixAnnFix1AnnFixmkAnnFix unannotatechildrenflatten filterAnnFix debugFlattenallAnnotationsfocusAnnexplorefindLeftmostDeepestyieldAnnTypeYieldFam MonadYieldYieldTYield runYieldTG runYieldT runYieldGrunYieldExceptOKFailed ErrorAlgebra CoalgebraAlgebraFixInoutcataanacomposcascadenavzFocuszUpzLeftzRightzDownchildallFociAnnrootAnn errorCata ErrorAlg_PFErrorAlg mkErrorAlg MkErrorAlg&Bounds leftMargin rightMarginRange innerRange outerRange posInRange rangeInRange rangeInBoundsrangesInBounds distRangePSymbolunparse symbolSizecollapsegetPossatisfypToken selectByRange selectByPos validBoundsrepairByrepair moveSelection mkBoundedunitchainrchainlYPsortOn impossiblecastIdcastTagCCCTagCIdC2C1CRCLbase Data.MaybeNothingdfshowAnysnd'explore'doYield distribute Data.MonoidmappendmapFixMonoidmemptyenter'allFoci' collapse'