fixing stx

This commit is contained in:
Jay McCarthy 2015-11-24 14:55:42 -05:00
parent 297a6d5c92
commit a5b65f285e

View File

@ -31,13 +31,18 @@
(syntax/loc stx (syntax/loc stx
(def x (remix-λ args . body)))])) (def x (remix-λ args . body)))]))
(define-syntax (def* stx) (module remix-block racket/base
(require (for-syntax racket/base
racket/generic
syntax/parse))
(define-syntax (def* stx)
(raise-syntax-error 'def* "illegal outside of block" stx)) (raise-syntax-error 'def* "illegal outside of block" stx))
(begin-for-syntax (begin-for-syntax
(define-generics def*-transformer (define-generics def*-transformer
(def*-transform def*-transformer stx))) (def*-transform def*-transformer stx)))
(define-syntax (def*-internal stx)
(define-syntax (def*-internal stx)
(syntax-parse stx (syntax-parse stx
;; xxx test this ;; xxx test this
[(_ (#%brackets dt . _) _) [(_ (#%brackets dt . _) _)
@ -56,7 +61,7 @@
(syntax/loc stx (syntax/loc stx
(def*-internal (x (remix-λ args . def-body)) bind-body))])) (def*-internal (x (remix-λ args . def-body)) bind-body))]))
(define-syntax (remix-block stx) (define-syntax (remix-block stx)
(syntax-parse stx (syntax-parse stx
#:literals (def*) #:literals (def*)
[(_ (~and (~not (def* . _)) before:expr) ... [(_ (~and (~not (def* . _)) before:expr) ...
@ -69,6 +74,13 @@
(syntax/loc stx (syntax/loc stx
(let () . body))])) (let () . body))]))
(provide def*
(for-syntax def*-transformer?
gen:def*-transformer)
remix-block))
(require (submod "." remix-block)
(for-syntax (submod "." remix-block)))
(define-syntax #%brackets (define-syntax #%brackets
(make-rename-transformer #'remix-block)) (make-rename-transformer #'remix-block))
@ -310,7 +322,6 @@
#:literals (#%brackets) #:literals (#%brackets)
[(_def (#%brackets _stx x:id) . body:expr) [(_def (#%brackets _stx x:id) . body:expr)
(syntax/loc stx (syntax/loc stx
;; xxx this "let ()" should be remix-block (define-syntax x (remix-block . body)))]))]))
(define-syntax x (let () . body)))]))]))
(provide stx) (provide stx)