| Object-oriented programming in Scheme - slide 5 : 11 |
Due to (1) the first class status of functions, and due to (2) the use of static binding of free names, it is possible to interpret a closure as an object
With this interpretation, it is possible to regard certain function definitions as classes
The send method which is used in the Point class. |
(define (point x y)
(letrec ((getx (lambda () x))
(gety (lambda () y))
(add (lambda (p)
(point
(+ x (send 'getx p))
(+ y (send 'gety p)))))
(type-of (lambda () 'point))
)
(lambda (message)
(cond ((eq? message 'getx) getx)
((eq? message 'gety) gety)
((eq? message 'add) add)
((eq? message 'type-of) type-of)
(else (error "Message not understood")))))) All necessary stuff to play with Point. |
Points and Rectangle |








