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

时间:2012-05-03 18:37:41

标签: prolog rule

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(_).

我想填充一个名为'listofQuestions'的事实数据库。一切正常,但我声称的东西留在记忆中。所以,如果我再次运行我的程序,我会在“listofQuestions”中添加相同的一堆事实。

我只想拥有一组数据。

三江源

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

在重新运行程序之前,可能会retractall/1