如何计算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
答案 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.