;;;; A++ Interpreter Test - Bank Account ; ;;;; (define make-account (lambda(balance) (define get-balance (lambda() balance)) (define deposit (lambda(amount) (define balance (add balance amount)) balance)) (define withdraw (lambda(amount) (if (gep balance amount) ((lambda() (define balance (sub balance amount)) balance)) false))) (define print-account (lambda() (ndisp! balance))) (define self (lambda(msg) (if (equal msg 'get-balance) get-balance (if (equal msg 'deposit) deposit (if (equal msg 'withdraw) withdraw (if (equal msg 'print) print-account false)))))) self)) (define konto (lambda() (define k1 (make-account ten)) (define k2 (make-account five)) ((k1 'print)) ((k1 'deposit) ten) ((k1 'print)) ((k1 'withdraw) four) ((k1 'print)) ((k2 'print)) ((k2 'deposit) nine) ((k2 'print)) ((k2 'withdraw) seven) ((k2 'print)) )) (konto)