| Stability | experimental |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Control.Egison.Matcher.Collection
Description
Synopsis
- class CollectionPattern m t where
- type ElemM m
- type ElemT t
- nil :: Pattern () m t ()
- nilM :: m -> t -> ()
- cons :: Pattern (PP (ElemT t), PP t) m t (ElemT t, t)
- consM :: m -> t -> (ElemM m, m)
- join :: Pattern (PP t, PP t) m t (t, t)
- joinM :: m -> t -> (m, m)
- elm :: Pattern (PP (ElemT t)) m t (ElemT t)
- elmM :: m -> t -> ElemM m
- joinCons :: Pattern (PP t, PP (ElemT t), PP t) m t (t, ElemT t, t)
- joinConsM :: m -> t -> (m, ElemM m, m)
- app :: Pattern (PP t, PP t) m t (t -> t, t)
- appM :: m -> t -> (Something, m)
- appCons :: Pattern (PP (t -> t), PP (ElemT t), PP t) m t (t -> t, ElemT t, t)
- appConsM :: m -> t -> (Something, ElemM m, m)
- newtype List m = List m
- newtype Multiset m = Multiset m
- newtype Set m = Set m
Documentation
class CollectionPattern m t where Source #
Class for collection pattern constructors.
Minimal complete definition
nil, cons, consM, join, elm, elmM, joinCons, joinConsM, app, appCons, appConsM
Associated Types
Matcher for the elements.
Type of the target elements.
Methods
nil :: Pattern () m t () Source #
Pattern that matches with empty collections.
[] is desugared into nil by the quasi-quoter.
cons :: Pattern (PP (ElemT t), PP t) m t (ElemT t, t) Source #
Pattern that destructs collections into its head and tail.
: is desugared into cons by the quasi-quoter.
consM :: m -> t -> (ElemM m, m) Source #
join :: Pattern (PP t, PP t) m t (t, t) Source #
Pattern that destructs collections into its initial prefix and remaining suffix.
++ is desugared into join by the quasi-quoter.
joinM :: m -> t -> (m, m) Source #
elm :: Pattern (PP (ElemT t)) m t (ElemT t) Source #
elmM :: m -> t -> ElemM m Source #
joinCons :: Pattern (PP t, PP (ElemT t), PP t) m t (t, ElemT t, t) Source #
joinConsM :: m -> t -> (m, ElemM m, m) Source #
app :: Pattern (PP t, PP t) m t (t -> t, t) Source #
appM :: m -> t -> (Something, m) Source #
appCons :: Pattern (PP (t -> t), PP (ElemT t), PP t) m t (t -> t, ElemT t, t) Source #
Instances
List matcher is a matcher for collections that matches as if they're normal lists.
Constructors
| List m |
Instances
| Matcher m t => Matcher (List m :: Type) ([t] :: Type) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||
| (Eq a, Matcher m a, ValuePattern m a) => ValuePattern (List m) [a] Source # | |||||||||||||||||
| Matcher m t => CollectionPattern (List m) [t] Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection Associated Types
Methods nil :: Pattern () (List m) [t] () Source # nilM :: List m -> [t] -> () Source # cons :: Pattern (PP (ElemT [t]), PP [t]) (List m) [t] (ElemT [t], [t]) Source # consM :: List m -> [t] -> (ElemM (List m), List m) Source # join :: Pattern (PP [t], PP [t]) (List m) [t] ([t], [t]) Source # joinM :: List m -> [t] -> (List m, List m) Source # elm :: Pattern (PP (ElemT [t])) (List m) [t] (ElemT [t]) Source # elmM :: List m -> [t] -> ElemM (List m) Source # joinCons :: Pattern (PP [t], PP (ElemT [t]), PP [t]) (List m) [t] ([t], ElemT [t], [t]) Source # joinConsM :: List m -> [t] -> (List m, ElemM (List m), List m) Source # app :: Pattern (PP [t], PP [t]) (List m) [t] ([t] -> [t], [t]) Source # appM :: List m -> [t] -> (Something, List m) Source # appCons :: Pattern (PP ([t] -> [t]), PP (ElemT [t]), PP [t]) (List m) [t] ([t] -> [t], ElemT [t], [t]) Source # appConsM :: List m -> [t] -> (Something, ElemM (List m), List m) Source # | |||||||||||||||||
| type ElemM (List m) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||
Constructors
| Multiset m |
Instances
| Matcher m t => Matcher (Multiset m :: Type) ([t] :: Type) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||
| (Eq a, Matcher m a, ValuePattern m a) => ValuePattern (Multiset m) [a] Source # | |||||||||||||||||
| Matcher m t => CollectionPattern (Multiset m) [t] Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection Associated Types
Methods nil :: Pattern () (Multiset m) [t] () Source # nilM :: Multiset m -> [t] -> () Source # cons :: Pattern (PP (ElemT [t]), PP [t]) (Multiset m) [t] (ElemT [t], [t]) Source # consM :: Multiset m -> [t] -> (ElemM (Multiset m), Multiset m) Source # join :: Pattern (PP [t], PP [t]) (Multiset m) [t] ([t], [t]) Source # joinM :: Multiset m -> [t] -> (Multiset m, Multiset m) Source # elm :: Pattern (PP (ElemT [t])) (Multiset m) [t] (ElemT [t]) Source # elmM :: Multiset m -> [t] -> ElemM (Multiset m) Source # joinCons :: Pattern (PP [t], PP (ElemT [t]), PP [t]) (Multiset m) [t] ([t], ElemT [t], [t]) Source # joinConsM :: Multiset m -> [t] -> (Multiset m, ElemM (Multiset m), Multiset m) Source # app :: Pattern (PP [t], PP [t]) (Multiset m) [t] ([t] -> [t], [t]) Source # appM :: Multiset m -> [t] -> (Something, Multiset m) Source # appCons :: Pattern (PP ([t] -> [t]), PP (ElemT [t]), PP [t]) (Multiset m) [t] ([t] -> [t], ElemT [t], [t]) Source # appConsM :: Multiset m -> [t] -> (Something, ElemM (Multiset m), Multiset m) Source # | |||||||||||||||||
| type ElemM (Multiset m) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||
Constructors
| Set m |
Instances
| Matcher m t => Matcher (Set m :: Type) ([t] :: Type) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||
| (Eq a, Matcher m a, ValuePattern m a) => ValuePattern (Set m) [a] Source # | |||||||||||||||||
| Matcher m t => CollectionPattern (Set m) [t] Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection Associated Types
Methods nil :: Pattern () (Set m) [t] () Source # nilM :: Set m -> [t] -> () Source # cons :: Pattern (PP (ElemT [t]), PP [t]) (Set m) [t] (ElemT [t], [t]) Source # consM :: Set m -> [t] -> (ElemM (Set m), Set m) Source # join :: Pattern (PP [t], PP [t]) (Set m) [t] ([t], [t]) Source # joinM :: Set m -> [t] -> (Set m, Set m) Source # elm :: Pattern (PP (ElemT [t])) (Set m) [t] (ElemT [t]) Source # elmM :: Set m -> [t] -> ElemM (Set m) Source # joinCons :: Pattern (PP [t], PP (ElemT [t]), PP [t]) (Set m) [t] ([t], ElemT [t], [t]) Source # joinConsM :: Set m -> [t] -> (Set m, ElemM (Set m), Set m) Source # app :: Pattern (PP [t], PP [t]) (Set m) [t] ([t] -> [t], [t]) Source # appM :: Set m -> [t] -> (Something, Set m) Source # appCons :: Pattern (PP ([t] -> [t]), PP (ElemT [t]), PP [t]) (Set m) [t] ([t] -> [t], ElemT [t], [t]) Source # appConsM :: Set m -> [t] -> (Something, ElemM (Set m), Set m) Source # | |||||||||||||||||
| type ElemM (Set m) Source # | |||||||||||||||||
Defined in Control.Egison.Matcher.Collection | |||||||||||||||||