2016-11-20 6 views
1

ここは私のプロログデータベースコードです。質問結果をプロローグ内のファイルに書き込む

:- 
    dynamic myTable/2. 

init :- 
    removeAll, 
    asserta(myTable('avalue', 'another value')), 
    asserta(myTable('avalue1', 'another value 1')), 
    asserta(myTable('avalue2', 'another value 2')), 
    asserta(myTable('avalue3', 'another value 3')), 
    asserta(myTable('avalue4', 'another value 4')). 

read(Col1, Col2) :- 
    myTable(Col1, Col2). 

saveQueries(FileName) :- 
    tell(FileName). 

stopSavingQueries :- 
    told. 

プロローグ出力をファイルに保存したいと考えています。ファイルに保存する必要がある動的データベースに対してクエリを実行し、クエリの保存を停止します。

?- init. 
true. 

?- saveQueries('queries.txt'). 
true. 

?- read(Col1, Col2). 
... 
?- stopSavingQueries. 
true. 

このコードファイルを実行すると、queries.txtが作成されます。 read(Col1, Col2).を実行すると、出力がコンソールに表示され、ファイルqueries.txtは空のままです。

答えて

1

しばらくの間、グーグルした後、私はこの解決策を見つけました。私はすべてのクエリとその結果を含むファイルqueries.txtを持っているそれらのコマンドを実行した後

saveQueries(FileName) :- 
    protocol(FileName). 

stopQueriesSaving :- 
    noprotocol. 

それから私は、この

?- saveQueries('queries.txt'). 
true. 

/* execute some queries here */ 

?- stopQueriesSaving. 
true. 

を行うことができます。

関連する問題