From 22cc8bc4584f742e1bd4c40d559d5a5aa705a1fc Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Sun, 14 Oct 2012 14:09:41 -0400 Subject: [PATCH] Move `define/match` to `racket/match` original commit: df594d3b3bd6924b80942323803385964e9a708b --- collects/unstable/match.rkt | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/collects/unstable/match.rkt b/collects/unstable/match.rkt index b19a1ad6..9fdd8d72 100644 --- a/collects/unstable/match.rkt +++ b/collects/unstable/match.rkt @@ -3,8 +3,7 @@ (require racket/class racket/match (for-syntax racket/base) - (for-syntax syntax/parse - syntax/parse/experimental/template)) + (for-syntax syntax/parse)) (provide match? as object) @@ -15,38 +14,6 @@ (syntax-rules () [(as ([x e] ...) p ...) (and (app (lambda (y) e) x) ... p ...)])) -;; Added by asumu -;; Comprehensive `define` procedure form for match -(provide define/match) - -(begin-for-syntax - (define-syntax-class function-header - (pattern ((~or header:function-header name:id) . args:args) - #:attr params - (template ((?@ . (?? header.params ())) - . args.params)))) - - (define-syntax-class args - (pattern (arg:arg ...) - #:attr params #'(arg.name ...)) - (pattern (arg:arg ... . rest:id) - #:attr params #'(arg.name ... rest))) - - (define-splicing-syntax-class arg - #:attributes (name) - (pattern name:id) - (pattern [name:id default]) - (pattern (~seq kw:keyword name:id)) - (pattern (~seq kw:keyword [name:id default])))) - -(define-syntax (define/match stx) - (syntax-parse stx - [(_ ?header:function-header ?clause ...) - (template - (define ?header - (match* (?? ?header.params) - ?clause ...)))])) - ;; Added by asumu ;; Match expander for objects from racket/class (define-match-expander object