Section 37
Want more of a challenge? View in iconic form (experimental)



       # OBJECT expressing inheritance
       # counter-container adds one method to container: count
[hear] (define counter-container
         (lambda (x)
           (let ((super (container new)))
             (reflective
              (lambda (self msg)
            (cond ((= (msg) counter-container) (self))
                  ((= (msg) count) (list-length (super inventory)))
                  (super (msg))))))));

[hear] (define cc1 (counter-container new));

[hear] (= 0 (cc1 count));

[hear] (cc1 add 4);

[hear] (= 1 (cc1 count));

[hear] (cc1 add 5);

[hear] (= 2 (cc1 count));