diff --git a/collects/unstable/match.rkt b/collects/unstable/match.rkt index 45887f3b..2f07528e 100644 --- a/collects/unstable/match.rkt +++ b/collects/unstable/match.rkt @@ -2,7 +2,7 @@ (require racket/match (for-syntax racket/base)) -(provide ==) +(provide == match? as) (define-match-expander == @@ -11,3 +11,10 @@ [(_ val comp) #'(? (lambda (x) (comp val x)))] [(_ val) #'(== val equal?)]))) + +(define-syntax-rule (match? e p ...) + (match e [p #t] ... [_ #f])) + +(define-match-expander as + (syntax-rules () + [(as ([x e] ...) p ...) (and (app (lambda (y) e) x) ... p ...)]))