Yes, sorry -- define is for private fields, not public ones. (This is something that can easily trip people up, ie making fields when they really want to be making methods; but I don't have a good idea of how to fix it.)
Robby On Thu, Dec 16, 2010 at 7:56 AM, Jay McCarthy <jay.mccar...@gmail.com> wrote: > Does 'define' really mean 'make a field'? I thought fields had to be > specially designated so that get-field would know about them... > Yes, this program errors: > #lang racket > (define c% > (class* object% () > (field [x 1]) > (define y 2) > (super-new))) > (define o (new c%)) > (field-names o) > (get-field x o) > (get-field y o) > -- > I agree that 'define' is like making a field, but fields are something > special too. > Jay > On Thu, Dec 16, 2010 at 6:51 AM, Robby Findler <ro...@eecs.northwestern.edu> > wrote: >> >> On Thu, Dec 16, 2010 at 12:22 AM, Mark Engelberg >> <mark.engelb...@gmail.com> wrote: >> > OK, it works when the set! occurs after the super-new. I didn't think >> > set! >> > would work at all in a class definition (as opposed to within a method); >> > I >> > was thinking of the whole system of defining classes as more of a >> > declarative DSL that only allowed certain constructs. >> >> You've probably already figured this out, but the body of a class is a >> series of definitions and expressions like at the top-level but >> 'define' taking on the meaning of 'make a field', and a bunch of new >> definitions appearing. The new stuff says what the methods are, but >> everything else is just executed in sequence as if it were in the body >> of the initializer (if this were in Java, say). >> >> hth, >> Robby >> _________________________________________________ >> For list-related administrative tasks: >> http://lists.racket-lang.org/listinfo/dev > > > -- > Jay McCarthy <j...@cs.byu.edu> > Assistant Professor / Brigham Young University > http://faculty.cs.byu.edu/~jay > > "The glory of God is Intelligence" - D&C 93 > _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev