The way I read it was the new function gets called instead of inner; #lang racket
(define a% (class object% (super-new) (define/pubment (hello) (printf "Hello ") (inner 0) (printf "!~n ")))) (define b% (class a% (super-new) (define/augment (hello greg) ;Call super here? (printf " ~a ~n" greg)))) (send (new b%) hello "Bob") -> Hello Bob! Is this right? Cheers, Stephen On Monday, September 24, 2012, Gregory Woodhouse wrote: > I am trying to understand how augmentable methods (as described in section > 13.5 of The Guide) work. > > Between the extremes of allowing arbitrary overriding and disallowing > overriding entirely, the class system also supports Beta-style augmentable > methods > [Goldberg04]. A method declared with pubment is like public, but the > method cannot be overridden in subclasses; it can be augmented only. A > pubment method must explicitly invoke an augmentation (if any) using inner; > a subclass augments the method using augment, instead of override. > > > From this I conclude that if, for example, I have a class a% and a > subclass b% and I want to augment a method of a% in b% I need to call inner > in the definition of the method in a%, not b%. Something like this > > #lang racket > > (define a% > (class object% > (super-new) > (define/pubment (hello) > (printf "Hello~n") > (inner 0)))) > > (define b% > (class a% > (super-new) > (define/augment (hello) > ;Call super here? > (printf ", world!~n")))) > > > but this gives me an error (not really a surprise). My assumption is that > super should be used in the subclass when overriding a method, but if a > method is to be augmented any potential code in an augmenting class should > be invoked from the superclass and super is not used in the subclass. > Obviously, I'm missing something. > -- -- Stephen De Gabrielle stephen.degabrie...@acm.org Telephone +44 (0)20 85670911 Mobile +44 (0)79 85189045 http://www.degabrielle.name/stephen ---- Professor: Oh God! I clicked without reading! Cubert: And I slightly modified something I own! Professor: We're monsters!
____________________ Racket Users list: http://lists.racket-lang.org/users