我有一个事实清单如下:
place(63,93,mumbai).
place(61,93,paris).
place(63,97,berlin).
place(33,13,calgary).
place(92,32,tokyo).
我想编写一个谓词,其中第一个事实的名称是根,然后将下一个作为子项添加到列表中。 目前我写了这个:
buildTree(t(null, null)).
buildTree(t(Name, [H|[]])) :- place(_,_,Name), buildTree(H).
我在运行时得到的答案如下:
?- buildTree(T).
T = t(null, null) ;
T = t(mumbai, [t(null, null)]) ;
T = t(mumbai, [t(mumbai, [t(null, null)])]) ;
T = t(mumbai, [t(mumbai, [t(mumbai, [t(null, null)])])])
我想要输出的是:
?- buildTree(T).
T = t(null, null) ;
T = t(mumbai, null) ;
T = t(mumbai, [t(paris, null)]) ;
T = t(mumbai, [t(paris, [t(berlin, null)])]) (...)
知道我的谓词中缺少什么?