CLOS

Chain Of Responsibility

日記などを振り返ると、CLOSの勉強をしていたのが今からちょうど1年前だったようです。忘れまくり。。。 復習しなくてはなりません。なぜなら僕はジェダイだから・・・!(ジェダイの復習 どうせなのでGoFのパターンとメタプログラミングをごちゃ混ぜにして…

:before :after :method-combination

:method-combination CL-USER> (defclass foo1 nil nil) ;=> #<STANDARD-CLASS FOO1> CL-USER> (defclass foo2 (foo1) nil) ;=> #<STANDARD-CLASS FOO2> CL-USER> (defclass foo3 (foo2) nil) ;=> #<STANDARD-CLASS FOO3> ;; [ + and append list max min nconc or progn ] が利用可能らしい CL-USER> (defgeneric method1 (x)</standard-class></standard-class></standard-class>…

change-class

change-classってクラス入れ替えるって言ってもsetqし直す(新規にインスタンスを作る)だけでしょ?何のためにあるの?とか思っていたのだけど、それだけのために存在するのもおかしいと思って色々試してみた。同じ名前のスロットがあると値を引き継いでく…

クラスの再定義

CL-USER> (defclass foo () ((x :accessor foo-x :initform 1))) #<STANDARD-CLASS FOO> CL-USER> (defclass bar (foo) nil) #<STANDARD-CLASS BAR> CL-USER> (setq b (make-instance 'bar)) #<BAR #x1A3190F5> CL-USER> (setf (foo-x b) 10) 10 ;; y というスロットは存在しないよ! CL-USER> (slot-exists-p b 'y) N</bar></standard-class></standard-class>…

興味あるけどまだ触ってないCLOS。 こんなことができるらしい。 (defclass name () ()) (defmethod say ((n name) string) (format t "~A" string)) (defmethod say :before ((n name) string) (princ "Hello,")) (defmethod say :after ((n name) string) (…

自分のエントリのまとめ

メモ書きしていて、今後また参照する可能性の高いもののまとめ。 CLOS :before, :after, :method-combination d:id:Nobuhisa:20081130:1228010128 change-class d:id:Nobuhisa:20081114:1226660512 クラスの再定義 d:id:Nobuhisa:20081113:1226582844 Lisp全…