2008/3/15 の comp.lang.scheme

例を見てみると意外と使えるかもしれない。 $ がアクセサなどを呼ぶ手続きか。

(import (tiny-talk))

(define p1 (object ((x 1)(y 2))))

($ add-method! p1 
     '->string 
     (lambda (self)
         (string-append "(point "
                         (->string [$ x self])
                         " "
                         (->string [$ y self])
                         ")")))
[$ ->string p1]
"(point 1 2)"

(define-predicate point?)

(point? 3)

SchemeLisp のオブジェクトシステムをちゃんと使ったことがないので TinyTalk が何に秀でているかが分からない。
小さいこと?。
むしろこれくらいなら自分で作れる気がする。(泥沼)