我一直在尝试解决我的这个问题一段时间,但我不确定如何去做。
例如,假设我的数据库中有这个“树”:
tree4(b(b(l(Apple),l(Banana)), b(l(Orange), l(Pear)))).
我希望能够查询数据库,以便检索每个 l() 中的信息并将其呈现在列表中。到目前为止,我已经这样做了:
leaves(l(X), L) :-
L = X.
leaves(b(X,Y), L) :-
leaves(X, A),
leaves(Y, B),
L = [A, B].
然后我查询数据库,它给了我这个:
?- tree4(T), leaves(T, L).
T = b(b(l(1), l(2)), b(l(3), l(4))),
L = [[1, 2], [3, 4]].
这段代码的问题是它会生成多个列表,这些列表位于我原来的列表中。还有其他方法可以解决这个问题吗?任何帮助将不胜感激!