[plt-scheme] Re: Cloning objects?
On Tue, Dec 8, 2009 at 17:32, Laurent <laurent.orseau at gmail.com> wrote:
>
> And, BTW, despite the use of `define-syntax-rule', when omitting the
> `source' argument in the `init-field-clone' definition,
> the form still works but becomes non-hygienic! Now I have to completely
> rewire my brain again...
>
>
More exactly:
`source' can be omitted from the arguments:
(define-syntax-rule (init-field-clone [var val] ...)
> (begin
> (init [source #f])
> (init-field [var (if source (get-field var source) val)] ...)))
>
it seems that `source' is inaccessible, but then it cannot be used as a
field anymore:
> (define c1%
> (class object%
> (init-field-clone [source "z"])
> (super-new)
> ))
> error: class: duplicate declared external init name in: source
>
how can this be if the macro is hygienic?
Well, of course, if it were completely internalized, I could not instantiate
c1% with `new'...
Does that means that it is `init' or `init-field' that are non-hygienic?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20091209/8e57bb90/attachment.html>