如何仅计算列表中的数字元素(PROLOG)

Ale*_*cha 3 prolog

count([],0).
count([_|Tail], N) :- count(Tail, N1), N is N1 + 1.
Run Code Online (Sandbox Code Playgroud)

这计算了所有元素,但我只需要计算数字。

Wil*_*sem 5

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)