如何使用Prolog中的read predicate读取.txt文件中的所有Prolog谓词?

时间:2013-04-19 08:28:31

标签: prolog

我正在使用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术语,但为什么只读取第一个术语?我该怎么做才能让它读取文件中包含的所有术语?我可以使用读取谓词吗?

1 个答案:

答案 0 :(得分:2)

你可以使用重复:

readFileSee(InputFile) :- seeing(OldStream),
                          see(InputFile),
                          repeat,
                          read(Term),
                          ( Term == end_of_file -> true ; 
                            write(Term), fail
                          ),
                          seen,
                          see(OldStream).