Prolog - Argumentos não são suficientemente instanciados
Estou escrevendo um pequeno programa que conta quantos elementos em uma lista não são números. Aqui está o meu código:
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).
Se eu executar código como este:
?- not_number([1,2,3,5], R).
Estou recebendo que R = 0 (como deveria ser)
R = 0.
Mas se eu colocar um caractere na lista:
?- not_number([1,2,3,5,a], R).
, então estou recebendo este erro:
ERROR: not_number/2: Arguments are not sufficiently instantiated
Exception: (10) not_number([a], _G247) ?
Alguém pode explicar o que há de errado com o código? Eu sou novo no prólogo.