mini-egison-0.1.0: Template Haskell Implementation of Egison Pattern Matching

Safe HaskellNone
LanguageHaskell2010

Control.Egison.Matcher

Documentation

data Something Source #

Constructors

Something 
Instances
Matcher Something Source # 
Instance details

Defined in Control.Egison.Matcher

class ValuePat m a where Source #

Methods

valuePat :: (Matcher m, Eq a) => (HList ctx -> a) -> Pattern a m ctx '[] Source #

Instances
Integral a => ValuePat Integer a Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher Integer, Eq a) => (HList ctx -> a) -> Pattern a Integer ctx [] Source #

Eq a => ValuePat Eql a Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher Eql, Eq a) => (HList ctx -> a) -> Pattern a Eql ctx [] Source #

(Matcher m, Eq a, Ord a, ValuePat m a) => ValuePat (Set m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (Set m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (Set m) ctx [] Source #

(Matcher m, Eq a, ValuePat m a) => ValuePat (Multiset m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (Multiset m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (Multiset m) ctx [] Source #

(Matcher m, Eq a, ValuePat m a) => ValuePat (List m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (List m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (List m) ctx [] Source #

data Eql Source #

Constructors

Eql 
Instances
Matcher Eql Source # 
Instance details

Defined in Control.Egison.Matcher

Eq a => ValuePat Eql a Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher Eql, Eq a) => (HList ctx -> a) -> Pattern a Eql ctx [] Source #

data Integer Source #

Constructors

Integer 
Instances
Matcher Integer Source # 
Instance details

Defined in Control.Egison.Matcher

Integral a => ValuePat Integer a Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher Integer, Eq a) => (HList ctx -> a) -> Pattern a Integer ctx [] Source #

class PairPat m a where Source #

Methods

pair :: (Matcher m, a ~ (b1, b2), m ~ Pair m1 m2) => Pattern b1 m1 ctx xs -> Pattern b2 m2 (ctx :++: xs) ys -> Pattern a m ctx (xs :++: ys) Source #

Instances
(Matcher m1, Matcher m2) => PairPat (Pair m1 m2) (a1, a2) Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

pair :: (Matcher (Pair m1 m2), (a1, a2) ~ (b1, b2), Pair m1 m2 ~ Pair m10 m20) => Pattern b1 m10 ctx xs -> Pattern b2 m20 (ctx :++: xs) ys -> Pattern (a1, a2) (Pair m1 m2) ctx (xs :++: ys) Source #

data Pair a b Source #

Constructors

Pair a b 
Instances
(Matcher a, Matcher b) => Matcher (Pair a b) Source # 
Instance details

Defined in Control.Egison.Matcher

(Matcher m1, Matcher m2) => PairPat (Pair m1 m2) (a1, a2) Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

pair :: (Matcher (Pair m1 m2), (a1, a2) ~ (b1, b2), Pair m1 m2 ~ Pair m10 m20) => Pattern b1 m10 ctx xs -> Pattern b2 m20 (ctx :++: xs) ys -> Pattern (a1, a2) (Pair m1 m2) ctx (xs :++: ys) Source #

class CollectionPat m a where Source #

Methods

nil :: (Matcher m, a ~ [a']) => Pattern a m ctx '[] Source #

cons :: (Matcher m, a ~ [a'], m ~ f m') => Pattern a' m' ctx xs -> Pattern a m (ctx :++: xs) ys -> Pattern a m ctx (xs :++: ys) Source #

join :: (Matcher m, a ~ [a']) => Pattern a m ctx xs -> Pattern a m (ctx :++: xs) ys -> Pattern a m ctx (xs :++: ys) Source #

Instances
Matcher m => CollectionPat (Set m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (Set m), [a] ~ [a']) => Pattern [a] (Set m) ctx [] Source #

cons :: (Matcher (Set m), [a] ~ [a'], Set m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (Set m) (ctx :++: xs) ys -> Pattern [a] (Set m) ctx (xs :++: ys) Source #

join :: (Matcher (Set m), [a] ~ [a']) => Pattern [a] (Set m) ctx xs -> Pattern [a] (Set m) (ctx :++: xs) ys -> Pattern [a] (Set m) ctx (xs :++: ys) Source #

Matcher m => CollectionPat (Multiset m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (Multiset m), [a] ~ [a']) => Pattern [a] (Multiset m) ctx [] Source #

cons :: (Matcher (Multiset m), [a] ~ [a'], Multiset m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (Multiset m) (ctx :++: xs) ys -> Pattern [a] (Multiset m) ctx (xs :++: ys) Source #

join :: (Matcher (Multiset m), [a] ~ [a']) => Pattern [a] (Multiset m) ctx xs -> Pattern [a] (Multiset m) (ctx :++: xs) ys -> Pattern [a] (Multiset m) ctx (xs :++: ys) Source #

Matcher m => CollectionPat (List m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (List m), [a] ~ [a']) => Pattern [a] (List m) ctx [] Source #

cons :: (Matcher (List m), [a] ~ [a'], List m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (List m) (ctx :++: xs) ys -> Pattern [a] (List m) ctx (xs :++: ys) Source #

join :: (Matcher (List m), [a] ~ [a']) => Pattern [a] (List m) ctx xs -> Pattern [a] (List m) (ctx :++: xs) ys -> Pattern [a] (List m) ctx (xs :++: ys) Source #

newtype List a Source #

Constructors

List a 
Instances
Matcher a => Matcher (List a) Source # 
Instance details

Defined in Control.Egison.Matcher

Matcher m => CollectionPat (List m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (List m), [a] ~ [a']) => Pattern [a] (List m) ctx [] Source #

cons :: (Matcher (List m), [a] ~ [a'], List m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (List m) (ctx :++: xs) ys -> Pattern [a] (List m) ctx (xs :++: ys) Source #

join :: (Matcher (List m), [a] ~ [a']) => Pattern [a] (List m) ctx xs -> Pattern [a] (List m) (ctx :++: xs) ys -> Pattern [a] (List m) ctx (xs :++: ys) Source #

(Matcher m, Eq a, ValuePat m a) => ValuePat (List m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (List m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (List m) ctx [] Source #

newtype Multiset a Source #

Constructors

Multiset a 
Instances
Matcher a => Matcher (Multiset a) Source # 
Instance details

Defined in Control.Egison.Matcher

Matcher m => CollectionPat (Multiset m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (Multiset m), [a] ~ [a']) => Pattern [a] (Multiset m) ctx [] Source #

cons :: (Matcher (Multiset m), [a] ~ [a'], Multiset m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (Multiset m) (ctx :++: xs) ys -> Pattern [a] (Multiset m) ctx (xs :++: ys) Source #

join :: (Matcher (Multiset m), [a] ~ [a']) => Pattern [a] (Multiset m) ctx xs -> Pattern [a] (Multiset m) (ctx :++: xs) ys -> Pattern [a] (Multiset m) ctx (xs :++: ys) Source #

(Matcher m, Eq a, ValuePat m a) => ValuePat (Multiset m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (Multiset m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (Multiset m) ctx [] Source #

newtype Set a Source #

Constructors

Set a 
Instances
Matcher a => Matcher (Set a) Source # 
Instance details

Defined in Control.Egison.Matcher

Matcher m => CollectionPat (Set m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

nil :: (Matcher (Set m), [a] ~ [a']) => Pattern [a] (Set m) ctx [] Source #

cons :: (Matcher (Set m), [a] ~ [a'], Set m ~ f m') => Pattern a' m' ctx xs -> Pattern [a] (Set m) (ctx :++: xs) ys -> Pattern [a] (Set m) ctx (xs :++: ys) Source #

join :: (Matcher (Set m), [a] ~ [a']) => Pattern [a] (Set m) ctx xs -> Pattern [a] (Set m) (ctx :++: xs) ys -> Pattern [a] (Set m) ctx (xs :++: ys) Source #

(Matcher m, Eq a, Ord a, ValuePat m a) => ValuePat (Set m) [a] Source # 
Instance details

Defined in Control.Egison.Matcher

Methods

valuePat :: (Matcher (Set m), Eq [a]) => (HList ctx -> [a]) -> Pattern [a] (Set m) ctx [] Source #