From 43d8464743a5edcb4e085b24b9225ebb16ebc93e Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 8 Apr 2016 10:47:16 -0700 Subject: [PATCH] fix `br:define` --- br/define.rkt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/br/define.rkt b/br/define.rkt index 6458a07..3b890ef 100644 --- a/br/define.rkt +++ b/br/define.rkt @@ -33,6 +33,11 @@ #:literals (syntax) #:description "id in syntaxed form" (pattern (syntax name:id))) + + (define-syntax-class syntaxed-thing + #:literals (syntax) + #:description "some datum in syntaxed form" + (pattern (syntax thing:expr))) (syntax-parse stx #:literals (syntax) @@ -47,6 +52,9 @@ [(_ sid:syntaxed-id sid2:syntaxed-id) ; (define #'f1 #'f2) #'(define-syntax sid.name (make-rename-transformer sid2))] + + [(_ sid:syntaxed-id sid2:syntaxed-thing) ; (define #'f1 #'42) + #'(define-syntax sid.name (λ (stx) sid2))] [(_ (sid:syntaxed-id stx-arg ...) expr ...) ; (define (#'f1 stx) expr ...) (raise-syntax-error 'define "definition of a syntax transformer must use lambda notation, because otherwise it's too easy to confuse the compile-time shape and the run-time shape" (syntax->datum #'sid.name))]