Named Objects

left top right

(define (make-named-object name)
  ;; All objects deletegate to this, so we are 
  ;; guaranteed that any object can respond to the
  ;; messages NAME, INSTALL, and SAY.
 (lambda (message)
   (case message
     ((NAMED-OBJECT?) (lambda (self) #T))
     ((NAME) (lambda (self) name))
     ((SAY)
      (lambda (self list-of-stuff)
        (if (not (null? list-of-stuff))
            (display-message list-of-stuff))
        'NUF-SAID))
     ((INSTALL) (lambda (self) 'INSTALLED))
     (else (no-method))))))

Jim Miller W3C