| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Egison.QQ
Description
Quasiquotation for rewriting a match clause.
Synopsis
- mc :: QuasiQuoter
Documentation
mc :: QuasiQuoter Source #
A quasiquoter for rewriting a match clause.
- Wildcards
A match clause that contains a wildcard
[mc| _ => "Matched" |]
is rewrited to
MatchClause Wildcard
(\HNil -> "Matched")- Pattern variables
A match clause that contains a pattern variable
[mc| $x => x |]
is rewrited to
MatchClause (PatVar "x")
(\HCons x HNil -> x)- Value patterns
A match clause that contains a value pattern
[mc| cons $x (cons $y (cons #(x + 1) (cons $z nil))) => (x, y, z) |]
is rewrited 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 rewrited 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 rewrited to
MatchClause (OrPat nil (cons Wildcard Wildcard))
(\HNil -> "Matched")