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