(defmacro send (inst mess &rest args) `(funcall ,inst ,inst ,mess ,@args)) (defmacro <- (mess &rest args) `(funcall self self ,mess ,@args)) (defmacro slot-value* (inst mess &rest args) `(funcall ,inst ,inst ,mess ,@args))以上のようにクロージャによりオブジェクト指向のオブジェクトを 表現することが可能になっています. また,self変数はそのメッセージが最初に送られたオブジェクトを指します. それは,このクロージャの第一引数がselfという名前に なっていることで実現できています.