2011-01-05 34 views
2

如何保存必要的條款? 例如,如何將項目保存到Prolog中?

save_to_file(File) :- 
    tell(File), 
    listing,   
    told. 

保存所有用戶規定將File。 但是,我怎樣才能保存只有必要的文件?

回答

3

使用open/3和close/1您可以更安全地定義safe_to_file/1。 否則,在列表/ 0期間發生的中斷或錯誤將 使流打開,允許其他部分意外地寫入相同的文件。 所以,

save_to_file(File) :- 
    open(File,write,Stream), 
    with_output_to(Stream, listing), 
    close(Stream). 

更安全。現在,只有列表可以寫入該文件。 with_output_to/2 特定於SWI,YAP。

要回到你的問題,在大多數情況下, portray_clause(Stream,Term)將是你真正想要的。

+0

但是我應該怎麼做才能保存所有類似的術語,如喜歡(約翰,蘋果),喜歡(邁克,橙子),喜歡(瑪麗,捲心菜)? – qutron 2011-01-05 20:29:54

+2

只是改變上面的列表。所以,而不是上市,你可以替代上市(喜歡)或如果你想更具體,列表(喜歡/ 2) – Roman 2011-01-05 21:50:57

+0

@qutron:啊,所以你想要的不是保存一個術語,而是保存一個選擇謂詞到文件。 – false 2011-01-05 22:23:46

相關問題