에 운동에 되돌아와 내가 가진 문제는이 예에서 무슨 일이 일어나고 있는지 이해입니다
이제 프롤로그 알아보기 - Chapter 3 - 예 3 : 후계자이제 프롤로그 알아보기 - 문제를 재귀
numeral(0).
numeral(succ(X)) :- numeral(X).
(X)를 내가 이유를 이해하기 위해 고군분투
X = 0 ?
X = succ(0) ? ;
X = succ(succ(0)) ? ;
X = succ(succ(succ(0))) ? ;
X = succ(succ(succ(succ(0)))) ?
: 그것은 첫째로 (0), 이러한 방식으로 하나 (0) 부분 SUCC를 증가하는 것은 그 공간이 부족할 때까지 SUCC을 계속 한 후, X 0을 줄 것이다 increme nts succ (0)?
프롤로그는 먼저 사실을 찾아서 일치하므로 첫 번째 0을 찾습니다. 그러면 다른 솔루션이 있는지 살펴보고 규칙을 "볼"것입니다. 규칙에서 인스턴스화 된 X를 0으로 사용합니다. 실패 할 경우 succ (0)가 계속 증가하는 이유를 확인하는 것입니다. X가 succ (0)이 되는가?
어리석은 두뇌에 대한 사과.
이 개념을 다루는 기능 프로그래밍에 대한 전체 책은 다음을 참조하십시오. [람다 계산법을 통한 기능 프로그래밍에 대한 소개] (https://pdfs.semanticscholar.org/d986/546bc3780db3a3c0f8d88b35e421ae4eec21.pdf) 참고 : 링크는 무료 버전이지만 많은 것을 사용하는 경우 [사본 구매] (https://www.amazon.com/Introduction- Functional-Programming-Calculus-Mathematics/dp/0486478831)해야합니다. –
아, 알 겠어! 우수한 설명과 책 제안에 감사드립니다 - 나는 그것이 큰 도움이 될 것이라고 생각합니다. 매우 감사. – qwerty
다른 유사한 예는 다음을 참조하십시오. [자연수의 설정 이론적 정의] (https://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers#Definition_as_von_Neumann_ordinals) –