実際にProlog処理系を使ったときの、あれこれ

たけおか@AXE

初出: 2007/MAR/11


assertしたりretractしたり。
SWI-Prolog や GnuPrologにおいて
GnuPrologは、dynamicな節は、いつもassert,retractさせてくれる。

SWI-Prologは、abolishすると、dynamic属性が忘れ去られ、 static procedureになってしまう。
そして、二度と、assert(retract)できない。
エラーとして、
No permission to modify static_procedure が
報告される。
なので、abolishは、使用せず、retract/1,retractall/1を使用しましょう。
これは、FAQです。
ERROR: No permission to modify static_procedure Name/Arity
http://gollem.science.uva.nl/twiki/pl/bin/view/FAQ/DynamicCode


※どんなprologでも、基本的に、dynamic宣言はしましょう。
次のごとく
:- dynamic(aho/0).
 
(この場合、aho/0という述語がdynamicという指定)
ISO仕様です。

たけおかのPrologページ 目次

Prologの入門文書に飽きた人に

GnuEmacsと、Prologを一緒に使うと便利! こちら。

Prologを使う(動作確認 程度のProlog入門)

Prologで記述した、StarTrek(1976年頃流行した古いゲーム)

たけおか(竹岡尚三)のホームページ