我正在编写一个小程序,它计算列表中有多少元素不是数字。这是我的代码:
not_number([],0).
not_number([X|T],R):-
not(number(X)),
R1 is R+1,
not_number(T,R1).
not_number([_|Tail],Result):-
not_number(Tail,Result).
如果我执行这样的代码:
?- not_number([1,2,3,5], R).
我得到 R = 0 (应该是这样)
R = 0.
但是,如果我在列表中添加一个字符:
?- not_number([1,2,3,5,a], R).
然后我收到此错误:
ERROR: not_number/2: Arguments are not sufficiently instantiated
Exception: (10) not_number([a], _G247) ?
有人可以解释代码有什么问题吗?我是序言的新手。