목록에있는 요소의 수를 숫자로 계산하는 작은 프로그램을 작성하고 있습니다. 나는 다음과 같은 코드를 실행하면프롤로그 - 인수가 충분히 인스턴스화되지 않았습니다.
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) ?
누군가 코드에 무슨 문제가 있다고 설명 할 수 있습니까? 나는 프롤로그를 처음 보았습니다.
A는 우측 (B)에
모든 B에게 이미 알려져되어야이다
'not_number ([a], R)'의 경우'R '이 인스턴스화되지 않은 경우'R1은 R + 1 '입니다. 귀하의 재귀 사례는 약간 거슬러 올라갑니다. 'not_number (T, R1), R은 R1 + 1'을 원한다. – lurker
완벽하게 작동합니다! – Eddwhis
[이 페이지] (http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse19)도'is' –