根据规则添加元素到列表?

时间:2012-07-20 22:55:37

标签: list

据我所知,它允许编写许多事实并创建可能性树 - 是否可以这样做:

我想根据规则是返回true还是false来为列表添加值?

有人可以告诉我一些可以解释这个问题的小代码吗?

感谢

1 个答案:

答案 0 :(得分:2)

假设您要生成包含所有凡人的列表。可以使用以下代码完成:

% facts  
human(victor).
human(peroni).
human(hugo).

% rule
mortal(X) :-
        human(X).

% add X to a list only if rule mortal(X) is true.
add(X,L,[X|L]) :-
        mortal(X).

示例

? add( victor, [hugo], Result).
Result = [victor, hugo].

? add( peroni, [], Result).
Result = [peroni].