2016-12-03 7 views
0

でバイナリツリーをテストするために、私は、このプロローグプログラムをテストしたい:私はそれを実行するとどのようプロローグ

binary_tree(void). 

binary_tree(tree(_Element,Left,Right)):-binary_tree(Left),binary_tree(Right). 

test(tree(a,tree(b,tree(d,void,void),void),tree(c,void,void))). 

test(X), binary_tree(X). 

私は

X = tree(a, tree(b, tree(d, void, void), void), tree(c, void, void)). 
を取得

(私は代わりに「真」になるはずです)

私は間違っていますか?あなただけの代わりにtrueを取得する必要があります言う

おかげ

+0

@IsabelleNewbieが正しい – CapelliC

答えて

2

? Prolog述語への呼び出しは、成功するか失敗する可能性があります。成功すると、彼らはあなたの場合のように、可変置換で答えます。 Prologシステムの答えは、期待通りにテストが成功したと答えています。

クエリには変数が含まれていないため、変数置換を指定できない場合は通常、trueのみを取得します。クエリが失敗すると、falseまたはfailが得られますが、変数の置換はありません。

関連する問題