我正在使用 SWI-Prolog 研究 Prolog。
我发现以下示例存在一些问题,这些示例只是访问文件并将用户放入 Prolog Shell 中的内容写入其中。
processFile(File) :- see(File),
processFile,
seen.
processFile :- read(Query),
process(Query).
process(end_of_file) :- !.
process(Query) :- Query,
write(Query),
nl,
processFile.
问题是,当我在 Prolog shell 中尝试使用文件名执行 processFile 语句时,我得到一个错误:
如果我给出带有扩展名的文件名,则会收到此错误消息(似乎将扩展名解释为运算符):
7 ?- processFile(myFile.txt).
ERROR: Syntax error: Operator expected
ERROR: processFile(myFile
ERROR: ** here **
ERROR: .txt) .
如果我给出一个不带扩展名的文件名,我会收到其他错误消息(文件不存在):
7 ?- processFile(myFile).
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory)
因此,我还尝试在 prolog 源代码文件所在的同一文件夹中创建一个名为myFile (不带扩展名)的新文件,但我仍然再次获得:
8 ?- processFile(myFile).
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory)
为什么?错误在哪里?我该如何解决?