Prolog成员函数列表

时间:2012-11-15 19:41:16

标签: prolog

试图弄清楚如何为列表创建“成员”功能。到目前为止,我已经创建了这个,但我没有接近正确的答案。


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)。

我希望有人能帮忙......

感谢。

1 个答案:

答案 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。