6

データベース ファイルがロードされた後に assert を使用できるようにルールを動的にしたい場合、どうすればよいですか? 現在 XSB Prolog を使用しています。ファイルは次のようなものです。

:- dynamic likes/2

likes(mary,tom)

XSB でファイルを参照しようとすると、エラーが発生します。

? consult('D:\file.P).
not permitted to assert to static predicatelikes/2
forward continuation...blahblah

何か案は?

4

1 に答える 1

8

動的述語は期待どおりに機能するため、機能しない場合は何か他の問題があります。

test.P が次のようになっている場合:

:- dynamic likes/2.

likes(mary,tom).

相談することができ、その後、より多くのいいね/2 ファクトをアサートできます。

XSB Version 3.2 (Kopi Lewak) of March 15, 2009
[i686-pc-linux-gnu; mode: optimal; engine: slg-wam; scheduling: local; word size: 32]

| ?- consult('test.P').
[Compiling ./test]
[test compiled, cpu time used: 0.0440 seconds]
[test loaded]

yes
| ?- assert(likes(mary, bob)).

yes
| ?- likes(X,Y).

X = mary
Y = tom;

X = mary
Y = bob;
于 2010-03-12T00:16:05.633 に答える