Description
A quasiquoter for or-patterns.
Description
A quasiquoter for or-patterns. It allows one additional form for patterns:
f [o| p1 | p2 | p3 |] = rhs
Above, p1
, p2
and p3
are three arbitrary patterns that bind the same variables. These variables are available in the expression rhs
. Nesting of or-patterns is not supported yet.
See also:
http://hackage.haskell.org/package/first-class-patterns supports
\/
(or). However, variables bound with those patterns are not named. This means:
g :: Either (x, y) (y, x) -> (x, y)
g [o| Left (x,y) | Right (y,x) |] = (x,y)
-- ends up slightly longer
g = elim $ left (pair var var) \/ right flipped ->> (,)
where
flipped = (\(a,b) -> (b,a)) --> pair var var
http://hackage.haskell.org/trac/ghc/ticket/3919 is the feature request for or-patterns in ghc