2016-10-13 10 views
0

は、任意の述語がtrue.An例の場合は、コンソール上で何かを書くことである場合は、次のようになります。あなたが書くことができシミュレート私は何をしようとしているの文

write('hello') IF member('a',['a','b']). 
+1

検索ボックスで「プロローグ」を検索します。このトピックに関する多くの記事。 – lurker

答えて

0

?- member('a',['a','b']) -> write('hello'). 
hello 
true. 

か句を定義します。

write:-member('a',['a','b']) -> write('hello'). 

とクエリ:

2

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のように、あなたのために行う述語を使用することで回避できます。

トップレベルで印刷されます。ファイル/ストリームに書き込む必要がない限り、writeformatの有効な使用方法が問題になります。それでも、それはよりクリーンで最初に最終結果を準備してから、一度にファイルに書き込む方が簡単です。

関連する問題