- (a)
-
(defun account-numbers (a-bank)
(mapcar #'(lambda (an-acct) (account-number an-acct))
(bank-accounts a-bank)))
- (b)
-
(defun find-account (a-bank account-number)
(find-if #'(lambda (an-acct)
(= (account-number an-acct) account-number))
(bank-accounts a-bank)))
- (c)
-
(defun make-interest-payer (a-bank account-number)
(let ((the-acct (find-account a-bank account-number)))
(cond ((eq nil the-acct) #'(lambda (x) ))
(T #'(lambda (interest)
(setf (account-balance the-acct)
(* (+ 1 interest) (account-balance the-acct))))))))
- (d)
-
(defun pay-interest (a-bank amount)
(mapc #'(lambda (acct-number)
(funcall (make-interest-payer a-bank acct-number)
amount))
(account-numbers a-bank)))