2011-01-05 61 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

相关问题