0

试图弄清楚如何为列表创建“成员”函数。到目前为止,我已经创建了这个,但我离正确答案还很近。


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

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

谢谢。

4

1 回答 1

2

你做的比需要的更复杂

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。

于 2012-11-15T20:28:55.973 回答