Welcome to the CHICKEN Scheme pasting service
hand-made OO added by mario-goulart on Tue Feb 7 20:57:02 2012
(define (make-object #!key (foo 'foo) (bar 'bar)) (let* ((foo foo) (bar bar) (set-foo! (lambda (value) (set! foo value)))) (lambda (message . args) (case message ((foo) foo) ((bar) bar) ((set-foo!) (if (null? args) (error 'set-foo! "Expected one argument") (set-foo! (car args)))) (else (error "Unknown message.")))))) (define an-object (make-object)) (print (an-object 'foo)) (an-object 'set-foo! 'quux) (print (an-object 'foo)) (define another-object (make-object foo: 'wat)) (print (another-object 'foo))