我试图让我的代码更加动态。我有以下内容的文件:在Prolog中动态设置参数
a(b1, c1, d1).
a(b2, c2, d2).
a(b3, c3, d3).
当我发现所有b1
,我做出这样的名单:
[b1, b2, b3].
当元数的变化在文件中,例如,当a(b1,c1,d1)
变成a(b1,c1,d1,e1)
,我的代码不起作用。有没有办法解决这个问题?我正在使用SWI-Prolog。
start :-
consult('file.pl'),
solve(L1, L2, L3),
list_to_set(L1, X),
write(X).
solve(L1, L2, L3):-
findall(First, data(First, _, _), L1),
findall(Second, data(_, Second, _), L2),
findall(Third, data(_, _, Third), L3).
可能重复[如何根据序言元数推广计划? ](http://stackoverflow.com/questions/5949012/how-to-generalize-program-according-to-arity-in-prolog) – 2011-05-13 08:33:01