(define make-reader (lambda(aname) (define name aname) (define books nil) (define super (make-person aname)) ; (define get-name (lambda() name)) ; (define purchase-book (lambda(nm atitle library) (define nbook ((library 'sell-book) nm atitle self)) (if (equal nbook false) false ((lambda() (define books (cons nbook books)) nbook))))) ; (define borrow-book (lambda(nm atitle library) (define nbook ((library 'lend-book) nm atitle self)) (if (equal nbook false) false ((lambda() (define books (cons nbook books)) nbook))))) ; (define return-book (lambda(abook library) (if ((library 'take-back-book) abook self) ((lambda() (define books (remove abook books)) true)) false))) ; (define show-books (lambda() (for-each (lambda(x) ((x 'display))) books))) ; (define who-are-you (lambda() (print (super 'get-name)))) ; (define self (lambda(msg) (if (equal msg 'purchase-book) purchase-book (if (equal msg 'borrow-book) borrow-book (if (equal msg 'return-book) return-book (if (equal msg 'show-books) show-books (if (equal msg 'who-are-you) who-are-you (super msg)))))))) self)) |
Georg P. Loczewski 2004-03-05