我想测试这个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“)
我做错了什么?
谢谢
发布于 2016-12-03 19:28:40
谁说你应该换成true呢?对Prolog谓词的调用可能成功,也可能失败。在成功时,它们会用变量替换来回答,就像您的例子一样。您的Prolog系统的答案显示您的测试成功,正如您所期望的那样。
因为查询不包含任何变量,所以如果不能给出变量替换,通常只会得到true。如果查询失败,您将得到false或fail,但不会进行变量替换。
https://stackoverflow.com/questions/40945905
复制相似问题