1

我正在使用 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.

read谓词读取Prolog 术语,但为什么只读取第一个术语?我该怎么做才能让它读取文件中包含的所有条款?我可以使用读取谓词吗?

4

1 回答 1

2

你可以使用重复:

readFileSee(InputFile) :- seeing(OldStream),
                          see(InputFile),
                          repeat,
                          read(Term),
                          ( Term == end_of_file -> true ; 
                            write(Term), fail
                          ),
                          seen,
                          see(OldStream).
于 2013-04-19T11:23:29.117 回答