.
original commit: 0680efe7e3013fafccba49a835a6c5b9a3c5527d
This commit is contained in:
parent
49167db7df
commit
933b8ac7c7
|
@ -73,8 +73,30 @@
|
||||||
;; ----------------------------------------
|
;; ----------------------------------------
|
||||||
|
|
||||||
(require "private/stxparamkey.ss")
|
(require "private/stxparamkey.ss")
|
||||||
(provide syntax-parameter-value)
|
(provide syntax-parameter-value
|
||||||
|
make-parameter-rename-transformer)
|
||||||
|
|
||||||
|
(define (make-parameter-rename-transformer id)
|
||||||
|
(make-set!-transformer
|
||||||
|
(lambda (stx)
|
||||||
|
(let ([v (syntax-parameter-value (syntax-local-introduce id))])
|
||||||
|
(cond
|
||||||
|
[(set!-transformer? v) ((set!-transformer-procedure v) stx)]
|
||||||
|
[(and (procedure? v)
|
||||||
|
(procedure-arity-includes? v 1))
|
||||||
|
(syntax-case stx (set!)
|
||||||
|
[(set! id _) (raise-syntax-error
|
||||||
|
#f
|
||||||
|
"cannot mutate syntax identifier"
|
||||||
|
stx
|
||||||
|
#'id)]
|
||||||
|
[else (v stx)])]
|
||||||
|
[else
|
||||||
|
(raise-syntax-error
|
||||||
|
#f
|
||||||
|
"bad syntax"
|
||||||
|
stx
|
||||||
|
#f)])))))
|
||||||
|
|
||||||
(define (syntax-parameter-value id)
|
(define (syntax-parameter-value id)
|
||||||
(let* ([v (syntax-local-value id (lambda () #f))]
|
(let* ([v (syntax-local-value id (lambda () #f))]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user