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

Safe HaskellNone
LanguageHaskell2010

Control.Egison.QQ

Description

Quasiquotation for rewriting a match clause.

Synopsis

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")