Prolog - Argumente werden nicht ausreichend instanziiert
Ich schreibe ein kleines Programm, das zählt, wie viele Elemente in einer Liste keine Zahlen sind. Hier ist mein Code:
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).
Wenn ich Code wie folgt ausführe:
?- not_number([1,2,3,5], R).
Ich bekomme das R = 0 (wie es sein sollte)
R = 0.
Aber wenn ich ein Zeichen in die Liste setze:
?- not_number([1,2,3,5,a], R).
then bekomme ich diesen Fehler:
ERROR: not_number/2: Arguments are not sufficiently instantiated
Exception: (10) not_number([a], _G247) ?
Kann jemand erklären, was mit Code nicht stimmt? Ich bin neu in Prolog.