\begin{lstlisting}[language=Scm]{}
(define new-book
(lambda(abook)
((abook 'change-owner) self)
((abook 'change-holder) self)
(define books (cons abook books))
abook))
;
(define sell-book
(lambda(author atitle reader)
(define abook (search-book author atitle))
(if (equal abook false)
false
((lambda()
(if (equal ((abook 'get-holder)) self)
((lambda()
(define xreader
(locate (lambda(x)
(equal reader x)) readers))
(if (equal xreader false)
(define readers (cons reader readers))
false)
((abook 'change-owner) reader)
((abook 'change-holder) reader)
abook))
false))))))
;
(define lend-book
(lambda(author atitle reader)
(define abook (search-book author atitle))
(if (equal abook false)
false
((lambda()
(if (equal ((abook 'get-holder)) self)
((lambda()
(define xreader
(locate (lambda(x)
(equal reader x)) readers))
(if (equal xreader false)
(define readers (cons reader readers))
false)
((abook 'change-holder) reader)
abook))
false))))))
;
(define take-back-book
(lambda(abook reader)
(define xreader (locate (lambda(x) (equal reader x)) readers))
(if (equal xreader false)
false
((lambda()
(if (equal reader ((abook 'get-holder)))
((lambda()
(define xbook
(locate (lambda(x) (equal abook x))
books))
(if (equal xbook false)
false
(if (equal ((abook 'get-owner)) self)
((lambda()
((abook 'change-holder) self)
true))
false))))
false))))))
;
|
Georg P. Loczewski 2004-03-05