Identifier created by datum->syntax is refered incorrectly.
Issue #105
resolved
This should raise an error.
(import (rnrs)) (define-syntax define/datum->syntax (lambda (x) (define (concat n1 n2) (string->symbol (string-append (symbol->string (syntax->datum n1)) "-" (symbol->string (syntax->datum n2))))) (syntax-case x () ((k name1 name2 var) (with-syntax ((name (datum->syntax #'k (concat #'name1 #'name2)))) #'(define name var)))))) (define-syntax define/wrap (syntax-rules () ((_ name1 name2 var) (define/datum->syntax name1 name2 var)))) (define/wrap n1 n2 'hoge) n1-n2
Comments (3)
-
reporter -
reporter - marked as minor
Marked as minor.
As far as I know, this doesn't hurt much.
-
reporter - changed status to resolved
Renaming defining identifier if it's not global one (Fixes
#105)→ <<cset 6545323fe09e>>
- Log in to comment
To fix this, I think macro expander (or compiler) should create unique binding name. This is because an global identifier can be referred by raw symbol.