[plt-scheme] A puzzle for those people doing class.ss stuff
>> That's the unexpected behavior. The fix is to pull super-new to after
>> the definition:
>>
>> (define (my-mixin super%)
>> (class super%
>> (override set-x)
>> (define x #f)
>>
>> (super-new)
>> ...))
>>
>>
>> But this is subtle stuff. In particular, one reason reason this is odd is
>> because this conflicts with the standard Java way of implementing class
>> initializers --- in Java, the call to the super's initializer must come
>> first. Whereas in my code, if I do that, it screws things up.
>
> That's not the whole story: in our class system you get to decide the
> relative ordering of the field initializers and the super call. you
> don't get to make that decision in Java.
I wanted to bring it up because I didn't fully recognize the implications
of when the super initializer fires off.
It means I have a little more work ahead of me: I must update:
http://schemecookbook.org/Cookbook/IntroductionToMzlibClasses
and add my puzzle code in there somewhere to highlight that difference,
because it is a crucial detail that I sorta glossed over. Hopefully, no
one else will get caught the way I did. *grin*