0

さまざまな述語にまたがるリストに要素を追加する必要があるという問題があります。引数ベースのリストを使用するのではなく、動的リスト述語を使用することにしました。簡単な例を以下に示します。最初に使用したときは問題なく動作しましたが、現在は引数を X として使用すると、プログラムを閉じて再コンパイルした後でも、リストから以前の引数データを取得し続けます。何が悪いのか誰か知っていますか?

//list declarations
:- dynamic listD/1.
listD([]).

//pushes X onto the list then retrieves the entire list for verification
sample(X):-
    assert(listD(X)),
    listD(Y),
    write(Y).


Example usage

sample([adam]).
//prints adam fine
sample([fred]).
//prints adam again
4

1 に答える 1

0

retractall起動時に状態をクリーンアップするために使用します。

sample(X):-
    retractall(listD(_)),
    assert(listD(X)),
    listD(Y),
    write(Y).
于 2013-04-27T21:30:21.720 に答える