!kfF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDENone$&'.=>?@AEHPUVXlm* mini-egisonAxioms for heterogeneous lists. mini-egisonHeterogeneous lists. mini-egisonaA list of matching atoms. It is used to represent a stack of matching atoms in a matching state. mini-egisonA matching atom. ctx- is a intermediate pattern-matching result. vsl is a list of types bound to the pattern variables by processing this matching atom. The types of a target a and a matcher m are existentially quantified each matching atom in a stack of matching atoms contains a pattern, matcher, and target for a different type.  mini-egisonxA matching state. A matching state consists of an intermediate pattern-matching result and a stack of matching atoms. vsS is a list of types bound to the pattern variables in the pattern after processing MState.  mini-egison:A match clause of a match expression whose target data is a and matcher is m0. The body of the match clause is evaluated to b.The first argument of  MatchClause is a pattern for a with a matcher m.. This pattern makes a binding whose type is vs. The second argument of  MatchClause: is a function that takes a heterogeneous list containing vs and returns b.vs is existentially quantified because generally each pattern of the list of match clauses in a pattern-matching expression makes different bindings.Several samples of  MatchClauses are found in Control.Egison.QQ. The J quasiquoter allows us to describe a match clause in user-friendly syntax.  mini-egisonThe Matcher class is used to declare that m! is a matcher for data of a type a. For example, 2instance (Matcher m a) => Matcher (Multiset m) [a]declares that "let m be a matcher for a,  (Multiset m) is a matcher for [a]". mini-egisonA pattern for data of a type a for a matcher m. ctxu is an intermediate pattern-matching result that is a type of a list of data bound in the left-side of the pattern. vsC is a list of types bound to the pattern variables in this pattern. mini-egisonUser-defined pattern; pattern is a function that takes a target, an intermediate pattern-matching result, and a matcher and returns a list of lists of matching atoms. mini-egison(Concatenate two lists of matching atoms. mini-egison(Create a list of a single matching atom. mini-egison$Create a list of two matching atoms. mini-egison&Create a list of three matching atoms. mini-egison$Concatenate two heterogeneous lists.  None$&'.=>?@AEHPUVXlm9@ mini-egisonmatchAll: takes a target, a matcher, and a list of match clauses. matchAll collects all the pattern-matching results and returns a list of the results evaluating the body expression for each pattern-matching result. matchAllE traverses a search tree for pattern matching in breadth-first order. mini-egisonmatch: takes a target, a matcher, and a list of match clauses. match calculates only the first pattern-matching result and returns the results evaluating the body expression for the first pattern-matching result. matchE traverses a search tree for pattern matching in breadth-first order. mini-egison matchAllDFS is much similar to matchAllG but traverses a search tree for pattern matching in depth-first order. mini-egisonmatchDFS is much similar to matchG but traverses a search tree for pattern matching in depth-first order.None$&'.=>?@AEHPUVXlmQY mini-egisonYA quasiquoter for rewriting a match clause. This quasiquoter is useful for generating a   in user-friendly syntax. Wildcards'A match clause that contains a wildcard [mc| _ => "Matched" |]is rewritten to 5MatchClause Wildcard (\HNil -> "Matched")Pattern variables/A match clause that contains a pattern variable [mc| $x => x |]is rewritten to 9MatchClause (PatVar "x") (\HCons x HNil -> x)Value patterns,A match clause that contains a value pattern D[mc| cons $x (cons $y (cons #(x + 1) (cons $z nil))) => (x, y, z) |]is rewritten to MatchClause (cons (PatVar "x") (cons (PatVar "y") (cons (ValuePat (\HCons x (HCons (y HNil)) -> x + 1)) (cons (PatVar "z") nil)))) (\HCons x (HCons (y (HCons z HNil))) -> (x, y, z)) And-patterns+A match clause that contains an and-pattern [mc| (cons _ _) & $x => x |]is rewritten to [MatchClause (AndPat (cons Wildcard Wildcard) (PatVar "x")) (\HCons x HNil -> x) Or-patterns*A match clause that contains an or-pattern %[mc| nil | (cons _ _) => "Matched" |]is rewritten to QMatchClause (OrPat nil (cons Wildcard Wildcard)) (\HNil -> "Matched")Collection patternsA collection pattern [p1, p2, ..., pn]is desugared into p1 : p2 : ... : pn : nil Cons patterns3A pattern with special collection pattern operator : p1 : p2 is parsed as  p1 `cons` p2 Join patterns3A pattern with special collection pattern operator ++ p1 ++ p2 is parsed as  p1 `join` p2None$&'.=>?@AEHPUVXlmcJ  mini-egisonOA matcher for a set. Both the order and the repetition of elements are ignored." mini-egisonA matcher for a multiset. When we regard a collection as a multiset, the order of elements is ignored but the number of times an element appears in the collection is counted.$ mini-egisonA matcher for a list.& mini-egisonPatterns for collections.' mini-egisonThe nil% pattern matches an empty collection.( mini-egisonThe consG pattern decomposes a collection into an element and the rest elements.) mini-egisonThe join6 pattern decomposes a collection into two collections.* mini-egisonA matcher for a pair of data., mini-egison A pattern constructor for pairs.. mini-egisonA matcher for integers. The IntegerH matcher can handle a pattern variable, a wildcard, and a value pattern.0 mini-egison/A matcher for data types that are instances of Eq. The EqlH matcher can handle a pattern variable, a wildcard, and a value pattern.2 mini-egisonValue patterns.4 mini-egison!Something built-in matcher. The  Something; matcher can handle only a pattern variable and a wildcard. !"#$%&)('*+,-./012345452301./,-*+&)('$%"# !None$&'.=>?@AEHPUVXlmd6  !"#$%&)('*+,-./012345None$&'.=>?@AEHPUVXlmfFGHIJKLMN      !"##$$%%&'()**+,--../01123456789:;<=>?@ABCDEFGHIJ(mini-egison-1.0.0-3G10jqIgpmdB4FYioad9SxControl.Egison.CoreControl.Egison.MatchControl.Egison.QQControl.Egison.MatchermcControl.EgisonPaths_mini_egison:++:HListHNilHConsMListMNilMConsMAtomMState MatchClauseMatcherPatternWildcardPatVarAndPatOrPatNotPat PredicatePatmappendoneMAtom twoMAtoms threeMAtomshappendmatchAllmatch matchAllDFSmatchDFSSetMultisetList CollectionPatnilconsjoinPairPairPatpairIntegerEqlValuePatvaluePat Something$fMatcherSomethinga$fValuePatEqla $fMatcherEqla$fValuePatIntegera$fMatcherIntegera$fMatcherPair(,)$fPairPatPair(,)$fCollectionPatList[]$fValuePatList[]$fMatcherList[]$fCollectionPatMultiset[]$fValuePatMultiset[]$fMatcherMultiset[]$fCollectionPatSet[]$fValuePatSet[]$fMatcherSet[]version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName