[plt-scheme] confusing certificate error
Why does the following not work?
(module init mzscheme
(require (lib "class.ss"))
(define-syntax (init-private stx)
(syntax-case stx ()
[(_ name value)
(with-syntax ([(internal-name)
(generate-temporaries #'(internal-name))])
#'(begin
(init ((internal-name name) value))
(define name internal-name)))]))
(provide (all-defined)))
When I use it from a client like:
(module client mzscheme
(require (lib "class.ss")
"init.ss")
(define cert-error%
(class object%
(init-private thing "value")
(define/public (to-string)
thing)
(super-new))))
I get the error: compile: reference is more certified than binding in:
internal-name1. The offending line appears to be
(define name internal-name)
When I eliminate that, it compiles.
Thanks,
Dave