| License | BSD3 |
|---|---|
| Maintainer | Brent Yorgey <byorgey@cis.upenn.edu> |
| Stability | experimental |
| Portability | non-portable (see .cabal) |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Pattern.Base
Synopsis
- newtype Pattern vars a = Pattern {
- runPattern :: a -> Maybe (Tuple vars)
- data Clause a r
- runClause :: Clause a r -> ReaderT a Maybe r
- (->>) :: Pattern vars a -> Fun vars r -> Clause a r
- (<|>) :: Alternative f => f a -> f a -> f a
- module Data.Pattern.Base.TypeList
- module Data.Pattern.Base.Tuple
Patterns
newtype Pattern vars a Source #
The pattern type. A value of type Pattern vars a is a pattern
which matches values of type a and binds variables with types
given by the type-list vars. For example, something of type
Pattern (a :*: c :*: Nil) (a,b,c)
is a pattern which matches against a triple and binds values of
types a and c. (A pattern of this type can be constructed as
tup3 var __ var.)
Many "normal" patterns can be conveniently defined using mk0,
mk1, mk2, and so on.
Constructors
| Pattern | |
Fields
| |
Clauses
Pattern-match clauses. Typically something of the form
pattern ->> functionwhere the function takes one argument for each variable bound by the pattern.
Clauses can be constructed with (, run with ->>)tryMatch,
and manipulated by the Monad and MonadPlus instances. In
particular, the ( operator from the <|>)Alternative class
is the way to list multiple cases in a pattern.
runClause :: Clause a r -> ReaderT a Maybe r Source #
Extract the underlying computation
constituting a Clause. This
function is not intended to be used
directly; instead, see match,
tryMatch, mmatch, and elim from
Data.Pattern.Common.
(->>) :: Pattern vars a -> Fun vars r -> Clause a r infix 4 Source #
Construct a Clause from a pattern and a function which takes
one argument for each variable bound by the pattern. For example,
pair __ nothing ->> 3 pair var nothing ->> \x -> x + 3 pair var (just var) ->> \x y -> x + y + 3
(<|>) :: Alternative f => f a -> f a -> f a infixl 3 #
An associative binary operation
Internals
module Data.Pattern.Base.TypeList
module Data.Pattern.Base.Tuple