Schemeでも同様なものが書けないか?
Schemeのオブジェクトモデルでしか理解できないカチカチ頭の私はそんな妄想を始め、
先日拡張独自実装した自己満足Scheme処理系で動くであろうプログラムを作成してみました。
たぶん動くんじゃないかなぁ。(未確認)
(define Complex (let ((magnitude (lambda (this) (sqrt (+ (* this.r this.r) (* this.i this.i)))))) (lambda (r i) (define this (lambda () this)) this))) (define c1 (Complex 1 2)) -> Complexオブジェクト1(クロージャ) (define c2 (Complex 1 3)) -> Complexオブジェクト2(クロージャ) (c1.magnitude) -> sqrt(5) (c2.magnitude) -> sqrt(10)
継承とかどうするか考えなきゃな。
・・・っていうか、プロトタイプオブジェクトについて何か勘違いしているかも。
あくまで妄想妄想ということで、ひらにご容赦を!