プロローグ:Hello Worldを印刷する手順を作成する
-
23-09-2019 - |
質問
この単純なものをエディタにロードしたいと思います。
Write:-repeat,write("hi"),nl,fail.
「こんにちは」と印刷されるようにします。
どうすればいいですか?
私は現在やろうとしています File->New
そして「Write into」という名前のファイルを保存します E:\Program Files\pl\xpce\prolog\lib
クエリを実行するとき:
?-書く。
印刷中です:
1 ?- Write.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)
なぜ?
解決
編集
さらに調べてみました。どうやら、これは、インスタンス化されていない変数について SWI-Prolog に問い合わせたときに実行されることのようです。
$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- X.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)
?-
アップデート
名前を小文字に変更すると機能します。変数は大文字です。
helloworld.プロローグ:
helloworld:-write('Hello World!'),nl,fail.
それから:
$ prolog
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- ['helloworld.prolog'].
% helloworld.prolog compiled 0.00 sec, 1,376 bytes
true.
?- helloworld.
Hello World!
false.
?-
最初にファイルを参照する必要があることに注意してください。これを試してみましたが、確かに機能します。
他のヒント
あなたは、プロシージャwrite
、ないWrite
に名前を付ける必要があります。アッパーケース始まる文字は変数のためのものです。あなたがwriteHi
か何かのような他の何かそれを呼び出す場合は、組み込みのような手順には同じ名前を持っていませんが、あなたの書き込みが異なるアリティを持っているので、あなたがwrite
それを呼び出すとき、それはまだ動作しますので、(それは、それほど混乱するかもしれません)1に内蔵されています。
また、あなたはそれがいずれかのように動作します(ただし、唯一の番目のバージョンは、実際に画面に単語HI出力します - お使いのバージョンでは、整数のリストとしてそれを印刷します)にかかわらず、"hi"
で'hi'
を交換したい場合があります。
所属していません StackOverflow