- changed status to invalid
Macro wrapped define-record-type renames field accessors
Issue #241
invalid
This should work and return v
but raises an error
(import (rnrs)) (define-syntax define-single-valued-token (syntax-rules () ((_ name) (define-record-type name (fields value))))) (define-single-valued-token t) (define v (make-t 'v)) (t-value v)
The error
Unhandled exception Condition components: 1. &undefined 2. &who t-value 3. &message unbound variable t-value in library user 4. &stack-trace stack trace: [1] #f src: (t-value v) "test2.scm":9 [2] eval [3] main-loop [4] dynamic-wind [5] script
Comments (1)
-
reporter - Log in to comment
After looking at the issue, this is proper behaviour as macro expansion. The
value
is not bound in the same context, thus the identifier must be renamed. To make this work, the field must be passed.Also, Racket (plt-r6rs) raises an error as well due to the unbound identifier of
t-value
.