Prolog - Los argumentos no están suficientemente instanciados
Estoy escribiendo un pequeño programa que cuenta cuántos elementos de una lista no son números. Aquí está mi 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).
Si ejecuto un código como este:
?- not_number([1,2,3,5], R).
Estoy obteniendo que R = 0 (como debería ser)
R = 0.
Pero si pongo un personaje en la lista:
?- not_number([1,2,3,5,a], R).
entonces recibo este error:
ERROR: not_number/2: Arguments are not sufficiently instantiated
Exception: (10) not_number([a], _G247) ?
¿Alguien puede explicar qué tiene de malo el código? Soy nuevo en prolog.