전 프롤로그를 처음 사용했습니다. 목록 목록의 크기를 계산하는 함수를 구현하고 싶습니다. 예를 들어 [[1,2,3],[a,b,c],[12,ab]]
이 있고 반환되는 값은 8
이어야합니다. 그래서 나는이 코드를 가지고 :따라 매개 변수를 전달하는 방법
size([], _).
size([_|T], X):- X1 is X + 1, size(T, X1).
total_size([], X):- write('size = '), write(X).
total_size([H|T], X):- size(H, X), total_size(T, X).
을하지만 내 기능 0
모든 시간을 반환합니다. 내 계획은 을 호출 할 때마다 X
을 size
함수에 전달하고 X
값을 증가시키는 것입니다. 쿼리는 다음과 같습니다 내가 잘못 뭐하는 거지
?- total_size([[1,2,3],[a,b,c],[12,ab]], 0).
?
는코르 넬리에게 사전에
PS 감사 : 나는 어느 곳에서든지 "프롤로그"근처 단어 "기능을"사용 안하고 알고있다.
옙. 논리적 "관계"를 표현하는 "술어"입니다. 그들은 "값"을 반환하는 "함수"가 아닙니다. 그것은 단지 명명법 일이 아닙니다. :) – lurker
당신도 할 수있다 :'total_size (L, X) : - flatten (L, LF), length (LF, X) .' – lurker
@mbratch : 대단히 감사합니다. 당신의 솔루션은 잘 작동합니다. 답변을 작성하고 보상을 받으시겠습니까? 그렇게한다면, 나는 해결책으로 표시 할 것입니다. 그렇지 않다면 나는 내 자신의 질문에 대답 할 것이다. 추신 : 나는 합법성 (술어, 관계, 기능)에 관심이 없다. 프롤로그를 발명 한 사람들은 분명히 당신이 선호하는 masochistic sadists 또는 sadistic masochists의 무리입니다. – corneliu