我想测试这个prolog程序:
#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 :(得分:2)
谁说你应该得到true
?调用Prolog谓词可能成功或失败。成功时,他们会回答一个变量替换,就像你的情况一样。您的Prolog系统的答案表明您的测试成功,正如您所期望的那样。
如果不能给出变量替换,通常只会获得true
,因为查询不包含任何变量。如果查询失败,您将获得false
或fail
但不会进行变量替换。