0

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)

なんで?エラーはどこですか?どうすれば解決できますか?

4

2 に答える 2

1

ファイル名を引用する必要があります。

processFile('myFile.txt').
于 2013-04-17T15:35:00.637 に答える