在prolog中,我有一个计算列表长度的规则。我想知道我的列表是否已预定义我该怎么办?
例如,在基地我有
list1[1,2,3,4,3,5,8].
longueur([],0).
longueur([_|Y],N) :- longueur(Y,M), N is M+1.
在prolog中,我输入longueur(list1,N).
我会继续false.
答案 0 :(得分:0)
longueur(list1,N).
为false,因为list1
不是列表,因此与您编写的longueur/2
两个规则中的任何一个都不匹配。
为了让它发挥作用,这就是你要做的:
?- list1(X), longueur(X,L).
X = [1, 2, 3, 4, 3, 5, 8],
L = 7.
如果您希望longueur/2
使用list1
作为参数,并且list1([1,2,3,4,5,6,7,8]).
作为事实,则应创建类似longueur_depuis_atome/2
的谓词:
longueur_depuis_atome(A, L) :-
call(A, X),
longueur(X, L).
然后:
?- longueur_depuis_atome(list1,L).
L = 7.