compter le nombre d'un élément particulier dans un prologue de la liste

Je suis en train de compter le nombre de fois qu'un élément apparaît dans une liste, pour l'instant j'ai venu avec

rate(X,[H|T],N):-
  X == H,
  N is N+1,
  rate(X,T,N).
rate(X,[_|T],N) :-
  rate(X,T,N).  
rate(_,[],N) :-
  N is 0.

J'ai couvert quand une correspondance est trouvée, quand il n'y a pas un match et quand il atteint la fin de la liste. Mais quand je l'ai tester je obtenir

43 ?- rate(4,[4,2,3,4,4,2],X).
ERROR: is/2: Arguments are not sufficiently instantiated
Exception: (6) frequency(4, [4, 2, 3, 4, 4, 2], _G393) ?     

Quels sont les arguments qui me manque exactement?

OriginalL'auteur rex | 2012-08-12