オブジェクトの動き
((object 'method) args...)
という(最も単純な)構文を思いついた。Javaの構文と結構似ているような気もする。
(define make-closure (lambda (_x) (let ( (x _x) ) (lambda (method . parameter) (cond ( (eq? method 'x) x) ( (eq? method 'setx1) (lambda (d) (set! x d))) ( (eq? method 'setx2) (set! x (car parameter))) ))))) (define num1 (make-closure 1)) (num1 'x);1 ( (num1 'setx1) 2) (num1 'x);2 (num1 'setx2 3) (num1 'x);3