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.