Prolog - 如何只断言/创建一次数据库


resultList(UsersQuery):-
    question(X,H),
    write(H),
    myintersection(H,UsersQuery,Match,TotalQuestionKeywords),
    Percent is Match/TotalQuestionKeywords*100,
    write('Question: '),
    write(X),nl,write('Quality: '), write(Percent),write('%'),nl,
    /* please look at this part
    Percent>=50,
    assert(listofQuestions(Percent,Question)),
    write(Percent),write(Question),nl,
    fail.
resultList(_).

我想填充一个名为"问题列表"的事实数据库。一切正常,但我断言的东西留在记忆中。因此,如果我再次运行我的程序,我会将相同的一堆事实添加到"问题列表"中。

我只想有一组数据。

谢谢

也许在重新运行程序之前执行retractall/1

为断言创建一个单独的谓词,用于检查事实是否尚未断言:

assertThisFact(Fact):-
    +( Fact ),!,         % + is a NOT operator.
    assert(Fact).
assertThisFact(_).

最新更新