计算Prolog中的子列表元素

时间:2009-09-06 05:38:50

标签: prolog

如何计算Prolog中的嵌套列表元素? 我定义了以下谓词,它将嵌套列表计为一个元素:

length([ ], 0).
length([H|T],N) :- length(T,M), N  is  M+1.

用法:

?- length([a,b,c],Out).
Out = 3 

这样可行,但我也想计算嵌套元素,例如。

length([a,b,[c,d,e],f],Output).
?- length([a,b,[c,d,e],f],Output).

输出= 6

1 个答案:

答案 0 :(得分:3)

len([H|T],N) :-
    len(H, LH),
    len(T, LT),
    !,
    N is LH + LT.
len([], 0):-!.
len(_, 1):-!.

测试:

?- len([a,b,[c,d,e],f],Output).
Output = 6.