listibearp

lisp + stibear = predicate?

EROSについて

Shibuya.lispテクニカル・トーク#8 でLTをしました。
上のスライドの通りですが,足りない部分を補足していきます。

集合論ベース

集合論ベース」というのは,クラスをとある特性を満たすオブジェクトの集合であると見なすということです.
この特性を表わすのが型に対する述語で,たとえばnumber?であったりstring?であったりのことです.
<number>クラスは,その特性関数を満たす,つまりnumber?が#tを返すようなオブジェクトの集合と考えます.

必要に応じてinclusion関係を付与可能

<number>クラスと<integer>クラスには包含関係があります.これをdefine-relationによって定義できるようにします.
そうすることで,より特定的なメソッドの順序を決定することができます.

利点

  • 実装が非常にミニマルで強力(メタクラスなどは必要なし)
  • クラスの概念がシンプルかつ自然(クラスが自分に属するオブジェクトを知っている)
  • クラス定義がシンプルになる(オブジェクトの構造はレコードに任せるため)

など.

ミニマルで理解しやすいのでいいですね.最高.