man(alan).
man(john).
man(george).
list_all:-
man(X),
write(X),
fail.
Run Code Online (Sandbox Code Playgroud)
问题?-list_all给出了答案:
alan
john
george
false
Run Code Online (Sandbox Code Playgroud)
所以我拥有数据库中的所有人员.有用!我的问题:我想获得相同的列表,但导出到.txt文件.我试图使用此代码执行此操作:
program :-
open('file.txt',write,X),
current_output(CO),
set_output(X),
man(X),
write(X),
fail,
close(X),
set_output(CO).
Run Code Online (Sandbox Code Playgroud)
效果是:程序给出答案false和文本:alan john george不在.txt文件中 - 因为使用fail谓词.
是否有选项可以将列表中的所有项目都放入.txt文件中(编写数据库中的所有选项)而不使用fail谓词?
我怎样才能做到这一点?请帮我.
你快到了.但调用fail/0阻止流被关闭.试试例子:
program :-
open('file.txt',write, Stream),
( man(Man), write(Stream, Man), fail
; true
),
close(Stream).
Run Code Online (Sandbox Code Playgroud)
使用事实上的标准forall/2谓词的替代方法可以是:
program :-
open('file.txt',write, Stream),
forall(man(Man), write(Stream,Man)),
close(Stream).
Run Code Online (Sandbox Code Playgroud)
,,,