2011-07-12 3 views
1

Prologでカットを使用しています。なぜ以下を返すために、次のクエリの効果がある:Prolog Cut Query

?- !,false. 
no 

まだこのクエリは次の値を返します。

?- !;false. 
yes 

答えて

2

最初のクエリは上のANDを実行します! (常にyesを返します)、falseを返します。常にfalseを返します。はい、いいえ=いいえ。

2番目のクエリでは、!最初のブランチに実行をコミットします。つまり、!は常にyesを返します。

+1

';'は '!'の存在下で論理ORと同じように動作しません。たとえば、 'parent(X): - !false; father(X).'は常に' no'を返します。 – svick

+0

もちろん、それは完璧な意味があります。私はそれに応じて、答えを編集しました! – levinia