Next: 5.6 問い合わせ部分
Up: 5 Prolog処理系の実現
Previous: 5.4 論理変数の調査
ホーン節の中にあらわれる変数名を他のホーン節に出てこない名前に
変更する方法を示します.すべての変数名を異なる変数名にするために,
シンボルを新たに作り出すgensymという組み込み関数を使うことが
できます.
gensymはシンボル表に登録しない変数を作り,それまでに生成したことの
ないシンボルを作るように番号を付加しています.
<cl> (gensym "abc")
#:|abc2|
<cl> (gensym "abc")
#:|abc3|
<cl> (gensym "abc")
#:|abc4|
このgensymにより新たな変数を作り,
ホーン節内にある論理変数との連想リストを作り,
もとのホーン節をsublisすると目的とするものが得られます.
(defun rename-variables (x)
(sublis
(mapcar
#'(lambda (var) (cons var (gensym (string var))))
(variables-in x))
x))
<cl> (variables-in '(<- (carnivore ?x)
(human ?x) (eat ?x meat)))
(?X)
<cl> (rename-variables '(<- (carnivore ?x)
(human ?x) (eat ?x meat)))
(<- (CARNIVORE #:?X26) (HUMAN #:?X26) (EAT #:?X26 MEAT))
Next: 5.6 問い合わせ部分
Up: 5 Prolog処理系の実現
Previous: 5.4 論理変数の調査
generated through LaTeX2HTML. M.Inaba 平成18年5月21日