试图弄清楚如何为列表创建“成员”功能。到目前为止,我已经创建了这个,但我没有接近正确的答案。
spec([system001,hard_drive(50)]).
spec([system002,hard_drive(150)]).
list1(Component):-
spec([Component,X|Y]).
which_system(Component, Component).
which_system(Component):-
list1(Component),
which_system(X, Component).
当我输入which_system(system001).
时
它有效,但当我放入which_system(hard_drive(50)).
它根本不会工作......我不知道如何让它找到hard_drive(50)。
我希望有人能帮忙......
感谢。
答案 0 :(得分:3)
你做的比所需更复杂
which_system(Component, System) :-
spec([System|Components]), member(Component, Components).
如果系统中有更多组件,例如spec([system001, hard_drive(50), hard_drive(100)]).
。
?- which_system(hard_drive(50), S).
将实例S转换为system001。