メモ #3

関数とは、任意のパラメータから任意の値への写像である。

オブジェクトとは定数関数(メンバ変数)や関数(メソッド)の集合であり、またオブジェクトそれ自体が識別子からメンバ(変数、関数)への写像である。

オブジェクトは0個以上のスロットを持つ。スロットとは識別子とそれが指す値の組である。オブジェクトは parent というスロットを持ち、これは自身が属する直系のスコープを指す。スコープとはオブジェクトと同義である。

また、オブジェクトは local というスロットを持つ。これは単なるスコープであり、オブジェクトでローカルスコープとして定義されたものは local の中に定義される。local スロットはオブジェクト複製時に初期化される。

プロトタイプベースを基本とし、クラスベースはライブラリレベルで実装する。また、識別子に型制約の情報を持たせるような拡張を施すことで、型制約の取捨選択が可能。