next up previous contents index
Next: ゴールレコード Up: 実装レベルのデータ Previous: モジュール

述語

 

KL1の述語は、KLIC中ではinclude/klic/struct.h内で定義されている、 predicate 型として表現されており、これを「述語記述子」と呼ぶ。 KL1言語レベルで用いられる述語型データ型データは、これをさらにgeneric objectで隠蔽したものである。

基本的には、「どのモジュールの、どの 述語か」ということが記述されている構造である。

struct predicate {
  module (*func)();             module関数
  unsigned short int pred;      述語ID
  unsigned short int arity;     引数個数
};

なお、述語IDとは、述語に対してモジュール内でユニークに付けられる番号である。 よって、引数個数がなくともfunc, predなるペアで述語の特定は可能であるが、 内部処理(たとえばGC)によってはゴールレコードのサイズを知るため 引数個数が必要になることがあり、ここに記録されている。

この構造体は静的、つまり、KLICのコンパイラにより生成される。



Sekita Daigo
1998-05-18