2011-04-06 2 views
26

저는 7 주 동안 7 개 언어로 책을 읽었습니다.7 주 7 개 언어로 된 Prolog exist_error

저는 port install gprolog-devel 명령을 사용하여 Mac 컴퓨터에 gprolog를 설치하고 첫 번째 프롤로그 코드를 실행했습니다. 나는 프롤로그 해석기에 likes(wallace, cheese).를 입력하면

likes(wallace, cheese). 
likes(grommit, cheese). 
likes(wendolene, sheep). 

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z). 

, 내가 오류를

캐치되지 않는 예외있어 : 오류 (existence_error (절차)/2를 좋아 top_level/0).

내 Mac에 Prolog 1.3.1을 설치할 수 없으며, prolog 1.4.0을 사용하고 있습니다.

답변

38

대화 형 gprolog 인터프리터는로드 된 술어 목록에 대해 쿼리를 실행하므로 existence_error 예외가 발생합니다. 로딩을 수행하는 IDE를 사용하거나 수동으로 수행하여 술어를로드해야합니다.

| ?- [user]. 
compiling user for byte code... 
likes(wallace, cheese). 
likes(grommit, cheese). 
likes(wendolene, sheep). 

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z). 

* Press Ctrl-D to end input. * 
user compiled, 6 lines read - 909 bytes written, 15538 ms 

yes 
| ?- friend(wallace,grommit). 

yes 
| ?- friend(wallace,wendolene). 

no 

gprolog 설명서는 장 Consulting a Prolog program

+2

균열 예 Grommit 이것에 대해 글을 참고하세요 :

여기에 한 가지 방법입니다! – monojohnny

+2

당신은 또한 당신의 술어를 파일에 넣고'gprolog --consult-file "my_predicates.pl"'처럼로드 할 수 있습니다. 그러면 gprolog가 파일을 분석하고 나중에 대화식 모드로 들어갑니다 – dualed