0
嗯,我有车的一些基本的部分,例如:序言 - 从列表中提取方面
elementary_part(spoke).
elementary_part(rim).
elementary_part(hub).
和一些子组件,如:
subcomponent(wheel, [quant(spoke, 5), quant(rim, 1), quant(hub, 1)]).
,我想写一个“ consists_of”计划,让基本的部分,如
consists_of(wheel, P).
我迄今为止撑过了这一点:
consists_of(wheel, P):- parts(wheel, P).
quant(X,Y):- write(Y), write(' piece(s) of '), write(X), write('.'), nl.
parts(X,Y):- subcomponent(X, [H|T]), print_a_list([H|T]).
print_a_list([]).
print_a_list([H | T]) :- nl, write(H), print_a_list(T).
我得到的结果是:
?- consists_of(wheel,P).
quant(spoke,5)
quant(rim,1)
quant(hub,1)
true.
...这不是我想要的。我得到正确的结果,当我尝试
consists_of(wheel, P):- quant(spoke, 5), quant(rim, 1), quant(hub, 1).
但因为我这样做了很多汽车零部件我知道这是不是解决办法。
我错过了什么?我怎样才能单独提取列表中的元素,以便'quant(X,Y)'能正确显示?或者至少只显示元素,而不是与函子的复合项。
非常感谢,最后两个解决方案的工作,第一个有一些错误,但我很满意,不能把我的手指上,它似乎相当简单最后,谢谢! – Gkri