fixing stx
This commit is contained in:
parent
297a6d5c92
commit
a5b65f285e
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user