実際のプログラム
どんなプログラムになるかです。
たとえば、オブジェクト指向で言うところの継承っぽいことができないか実験しました。
(define (superClass x) (define (self) self) (define (+! y) (set! x (+ x y))) self) (define (theClass y) (superClass (+ y 10)).(let ((super self)) (define (self) self) (define x 99) (define (display-status) (display self.x) (display "+") (display super.x) (display "=") (display (+ self.x super.x)) (newline)) (define (test-method) (display "start") (newline) (display-status) (super.+! 1) (set! x (+ x 2)) (display "end") (newline) (display-status)) self))
・・・なんだかちょっと自分で書いていて不思議な気分。
(selfの定義位置によってはもしかしたらR5RSと異なっているかもしれません。私の実装ではシーケンスの最後にselfを返しているんですが、これより前にselfが定義されていればいいという、非常にゆるい実装です。)