[plt-scheme] side effects in R6RS modules
Chongkai Zhu
czhu at cs.utah.edu
Sun May 3 10:53:21 EDT 2009
Michele Simionato wrote:
> (define-syntax define+
> (lambda (x)
> (syntax-case x ()
> ((define+ name value)
> #'(begin
> ;; dirty trick to get an expand time side effect
> (define-syntax dummy (begin (register #'name) (lambda (x) #f)))
> ;; the real definition
> (define name value))))))
>
Why the dirty trick? This works:
(define-syntax define+
(lambda (x)
(syntax-case x ()
((define+ name value)
(begin (register #'name)
#'(define name value))))))
More information about the plt-scheme
mailing list