count([],0).
count([_|Tail], N) :- count(Tail, N1), N is N1 + 1.
Run Code Online (Sandbox Code Playgroud)
这计算了所有元素,但我只需要计算数字。
Prolog 有一个 ISO 内置谓词number/1,用于检查给定的参数是否为数字。
我们可以简单地使用 if-then-else 语句来增加N is N1+1或设置N = N1,例如:
count([],0).
count([H|Tail], N) :-
count(Tail, N1),
( number(H)
-> N is N1 + 1
; N = N1
).Run Code Online (Sandbox Code Playgroud)