次のように演算子を定義します。
:- op(500, xfx, =>).
次のようなものを試すと:
assert(a => b).
Prolog で、「static_procedure (=>)/2 を変更する権限がありません」というエラーが発生します。
解決策はありますか?
次のように演算子を定義します。
:- op(500, xfx, =>).
次のようなものを試すと:
assert(a => b).
Prolog で、「static_procedure (=>)/2 を変更する権限がありません」というエラーが発生します。
解決策はありますか?
セキュリティとして、実行時に述語を変更しようとしていることを SWI に警告する必要があります。
:- dynamic (=>)/2.
ファイルの先頭に配置してください。
の代わりに別の記号を意味していたに違いありません(=>)/2
。おそらく(->)/2
、これは変更できない制御構造です。
SWI-Prolog へようこそ (マルチスレッド、32 ビット、バージョン 6.1.3-116-gf1c7e06) ... ?- asserta((a -> b))。 エラー: asserta/1: 静的プロシージャ `(->)/2' を変更する権限がありません エラー: /opt/gupu/pl-devel/lib/swipl-6.1.3/boot/init.pl:194 で定義されています ?- op(500, xfx, =>). 真実。 ?- asserta(a => b)。 真実。