2013-03-26 2 views
2

나는 프롤로그 물론 초보자를 복용하고 있습니다. 우리는 여기에 광산 우리는 산술 술어 추가 (X, Y, Z)을 개발하도록 요청정의되지 않은 절차 S/1 조건

% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,856 bytes 
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.4) 

을 말한다 무엇, SWI - 프롤로그 사용하기로되어있다. 후속 s (X) [= X + 1] 함수를 사용하여. 이 조건자는 내 컴퓨터에서 다음 오류와 함께 실패합니다.

ERROR: toplevel: Undefined procedure: s/1 (DWIM could not correct goal) 

해결책이있는 사람이 있습니까? 내 수영을 다운 그레이드해야 할까?

감사합니다.

답변

2

귀하의 SWI - 프롤로그 괜찮아,하지만 당신은 할당을 오해. 당신은 add/3에 대한 정의를 써야합니다. 보통 숫자 대신 Peano 표현을 사용합니다. 예를 들어, 2가 s (s (0))가되는 곳을 말합니다. 당신은 당신이 직면하고있는 바로 그 맥락에서 실제 프롤로그 실행을 이해하는 데 도움이 예 I answered를 들어, 비슷한 질문을 검색 할 수 있습니다.

1

당신은 (당신이 오류를 얻고있다 그 이유는) s/1 실제 술어가 아니기 때문에 당신의 인터프리터 버전을 다운 그레이드 할 필요가 없습니다. s/1 그냥 당신이 이미 알고있는대로 "후계자"를 의미하고, 재귀 방식으로 숫자를 표현하기 위해 사용됩니다.

The natural numbers in Prolog are built from two constructs, the constant symbol 0 and the successor function s of arity 1. All the natural numbers are then recursively given as 0, s(0), s(s(0)), s(s(s(0))), ... . We adopt the convention that sn(0) denotes the integer n, that is, n applications of the successor function to 0

[스털링

L., E. Shaphiro "프롤로그의 예술", 제 2 판. - MIT 보도]

난 당신이 this related question 흥미로운 찾을 수 있습니다 생각합니다.