我正在使用SWI Prolog学习Prolog。考虑一下我有一个名为 myFile.txt 的文件,其中包含以下内容:
line1.
line2.
line3.
现在我正在尝试创建一个谓词,使用读取谓词必须读取此文件的内容,我创建了以下谓词:
readFileSee(InputFile) :- seeing(OldStream),
see(InputFile),
read(Term),
write(Term),
seen,
see(OldStream).
问题是,当我执行这个程序时,我只获得了第一行。例如,如果我发布此声明,我会获得:
?- readFileSee('/home/andrea/Documenti/prolog/lezione6/project/myFile.txt').
line1
true.
读取谓词读取 Prolog术语,但为什么只读取第一个术语?我该怎么做才能让它读取文件中包含的所有术语?我可以使用读取谓词吗?
答案 0 :(得分:2)
你可以使用重复:
readFileSee(InputFile) :- seeing(OldStream),
see(InputFile),
repeat,
read(Term),
( Term == end_of_file -> true ;
write(Term), fail
),
seen,
see(OldStream).