実際にProlog処理系を使ったときの、あれこれ
初出: 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年頃流行した古いゲーム)
たけおか(竹岡尚三)のホームページ