22 lines
663 B
Scheme
22 lines
663 B
Scheme
#lang scheme/base
|
|
(require scheme/match/match
|
|
(for-syntax scheme/base))
|
|
(provide (except-out (all-from-out scheme/match/match)
|
|
define-match-expander)
|
|
(rename-out [define-match-expander* define-match-expander]))
|
|
|
|
(define-for-syntax (no-old-match-form stx)
|
|
(raise-syntax-error
|
|
#f
|
|
"works only for constructor-based `match' form"
|
|
stx))
|
|
|
|
(define-syntax define-match-expander*
|
|
(syntax-rules ()
|
|
[(_ id expr) (define-match-expander id expr)]
|
|
[(_ id expr expr2) (define-match-expander id
|
|
expr
|
|
no-old-match-form
|
|
(#%expression expr2))]))
|
|
|