SWI-Prologを使ってPrologを勉強しています。
次の例では、ファイルにアクセスして、ユーザーが Prolog シェルに入力したものを書き込むだけで問題が発生しています。
processFile(File) :- see(File),
processFile,
seen.
processFile :- read(Query),
process(Query).
process(end_of_file) :- !.
process(Query) :- Query,
write(Query),
nl,
processFile.
問題は、Prolog シェルでファイル名を指定して 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)
そのため、プロローグ ソース コード ファイルと同じフォルダーにmyFile (拡張子なし)という名前の新しいファイルを作成しようとしましたが、それでも次のようになります。
8 ?- processFile(myFile).
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory)
なんで?エラーはどこですか?どうすれば解決できますか?