CLIPS超入門2(ワーキングメモリ)

assertとfact

 次にプロダクションシステムの主要な要素の一つであるワーキングメモリについて、メモリへの書き込み(記憶)と消去(忘却)をやってみましょう。CLIPSでは、ワーキングメモリの要素をfactと呼びます。

factの例

 (duck)
 (LISP)
 (Lisp Java)
 (C Language Integrated Production System)

こ のように、()で囲まれた単語の列がfactとなります(なお、この他に(employee (name “Nonaka”) (employee-code “K14373”)) といったように、クラスのインスタンスのようにfactを記述する方法もありますが、ここでは最短距離でルールベースの概念を一通り説明するために、ここ では、ひとまず上記の記述の仕方のみを扱います)。

さてここで、以下の代表的なワーキングメモリを操作する関数(function)、

  •  (facts) ワーキングメモリの内容を表示する(factsウィンドウを開くことでもワーキングメモリの内容を表示することが可能)
  •  (assert <fact>) <fact>をワーキングメモリに書き込む
  •  (retract <fact-specifier>) <fact-specifier>(factのインデックス等)で特定されるfactをワーキングメモリから消去する

を用いて、CLIPSのワーキングメモリを操作してみましょう。

 

assertとfacts

factをワーキングメモリに書き込む関数が、assertです。CLIPSのプロンプトに続けて、

(assert (C Language Integrated Production System))

という関数を打ち込んでみましょう。すると、<Fact-0>という表示がされ、再びプロンプトがあらわれます。これは、ワーキングメモリの(factのインデクス)0番に上記のfactが登録されたことを意味しています。

次に、

(facts)

と打ち込んで、現在のワーキングメモリの状態を見てみましょう。すると、

f-0         (C Language Integrated Production System)
For a total of 1 fact

という表示がされるはずです。

assertとfact

 

また、factの内容をモニタするウィンドウを開いておくと、リアルタイムでワーキングメモリの内容を見ることができます。

 

factウィンドウ

 

retract

次に登録されたfactを消去するretract関数を見てみましょう。プロンプトに続けて

(retract  0)

と入力してみましょう。これは、ワーキングメモリ中、0番に登録された(インデクスが0番の)factが消去されます。ここで(facts)を入力しても何も表示されないのを確認しておきます。

 retract