2011-04-06 43 views
26

我只是在七週內學習七種語言。七週後七種語言的序言exists_error

我已經在我的Mac機器上使用命令port install gprolog-devel安裝了gprolog並運行了第一個prolog代碼。

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

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

如果我在序言中解釋器中鍵入likes(wallace, cheese).,我有錯誤

未捕獲的異常:錯誤(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

開裂例金屬釦眼中寫道! – monojohnny 2013-05-09 21:28:55

+2

你也可以把你的謂詞放在一個文件中並像'gprolog --consult-file「my_predicates.pl''一樣加載它,然後gprolog解析文件並進入交互模式 – dualed 2015-02-27 09:29:31