我正在使用 SWI Prolog 研究 Prolog,我发现关于如何从文件中读取文本数据并使用see内置谓词将其打印在屏幕上的许多困难。
我有这个程序,它使用读取模式中的打开谓词和与该文件关联的流来读取文件的内容
readFile(InputFile, TextList):- open(InputFile, read, Stream),
readCharacter(Stream, TextList),
close(Stream),
!.
readCharacter(Stream,[]):- at_end_of_stream(Stream). %condizione di uscita
readCharacter(Stream,[Char|Rest]):-
get0(Stream,Char),
readCharacter(Stream,Rest).
这很简单,但我问我是否可以使用see谓词来实现相同的行为,以将输入流从用户(控制台)更改为另一个文件,然后使用内置的 see 关闭此流(返回给用户)谓词:
我在想这样的事情:
readFileSee(InputFile, TextList) :- see(InputFile),
read_from_file(TextList),
seen. %or maybe: see(user).
但是现在,与前面的工作示例不同,我没有调用get0谓词的Stream变量,所以我不知道怎么回事。
有人可以帮我解决这个问题,读取 InputFile 的内容并将此内容放入 TextList 列表中吗?