CLOS雑感
最近、Lispでゲーム作っています。それにCLOSを使ってみています。
理由はいくつかあるのですが、大体以下の通り。
- CLOSを利用するとデザインパターンが使える
- 状態遷移マシンの表現が楽
ガチガチにLisperな人だったらどっちも不要なのかもしれませんが、自分には必須とは言いませんがやっぱりあると便利です。
ただ、いくつか使っていると既存のデザインパターンをそのまま適用してもうれしくないという場面も多いです。これの理由は以下の影響かと思っています。
- マルチメソッドをサポートしている
C++で面倒なVisitorとか頑張る必要がない
- インタフェースクラスが無い
メソッドの決定方法がRubyのようなダックタイピングに似ている。しかも、多重継承も許容してくれて、かつメソッド決定の方法も決まっている(C++みたいにどれが呼ばれるか分からない事は無い)。
- 関数がファーストクラス
メソッドなどを直接オブジェクトが持ってしまえる。このためメソッドを隠蔽するためのパターンは基本的に不要になります。
一個ゲーム作りきるころには結構考え方もまとまってくるのかなと思いつつ現時点の感想をまとめてみました。