は、任意の述語がtrue.An例の場合は、コンソール上で何かを書くことである場合は、次のようになります。あなたが書くことができシミュレート私は何をしようとしているの文
write('hello') IF member('a',['a','b']).
は、任意の述語がtrue.An例の場合は、コンソール上で何かを書くことである場合は、次のようになります。あなたが書くことができシミュレート私は何をしようとしているの文
write('hello') IF member('a',['a','b']).
:
?- member('a',['a','b']) -> write('hello').
hello
true.
か句を定義します。
write:-member('a',['a','b']) -> write('hello').
とクエリ:
a
がtrueで、b
がtrueの場合、a, b
は真(成功)です。
書き込み "こんにちは" と
x
が[a,b]
であり、そしてそれがある場合は、 "こんにちは" 書く場合x
は[a,b]
?- write(hello), member(x, [a,b]).
hello
false.
チェックしているかどうかを確認
:順序は重要です
?- member(x, [a,b]), write(hello).
false.
チェックされたif-then-elseザ・
?- member(a, [a,b]), write(hello).
hello % press Enter
true .
a
が
[a,b]
であり、そしてそれがある場合は、 "こんにちは" 書いた場合は、
Condition -> Then ; Else
は若干異なる単独であなたの質問に基づくものです構築、私は「ドンあなたが本当にそれを必要とするかどうかはわかりません。例えば、これらの例に余分な選択ポイントを避けるために、あなたが書きたいかもしれません。もちろん
?- memberchk(a, [a,b]), write(hello).
hello
true.
、あなたは実際には各メンバーを見てする必要がある場合があります。たとえば、次のように
印刷アウトあなたはこのを注意深く見なければならない文字
?- member(X, [a, b, 'C', 'D', e, f, 'G']), char_type(X, upper).
X = 'C' ;
X = 'D' ;
X = 'G'.
のリストでのみ大文字を。 if-then-elseや印刷もありません。私はほとんどあなたが非問題を解決しようとしていると言っています。非常に一般的に言えば、if-then-elseや、write
またはformat
の印刷があまりにも頻繁に必要はありません。
if-then-elseは、上記のとmemberchk/2
のように、あなたのために行う述語を使用することで回避できます。
トップレベルで印刷されます。ファイル/ストリームに書き込む必要がない限り、write
とformat
の有効な使用方法が問題になります。それでも、それはよりクリーンで最初に最終結果を準備してから、一度にファイルに書き込む方が簡単です。
検索ボックスで「プロローグ」を検索します。このトピックに関する多くの記事。 – lurker