2011-11-20 63 views
1

牛羚序言段錯誤考慮下面的代碼:上簡單的數學

example1(X) :- X is 1. 
example2(X) :- X is 1+1. 

當我gprolog運行它,我得到:

$ gprolog 
GNU Prolog 1.4.0 
By Daniel Diaz 
Copyright (C) 1999-2011 Daniel Diaz 
| ?- ['example']. 
compiling /Users/tomo/projects/7L7W/prolog/day2/example.pl for byte code... 
/Users/tomo/projects/7L7W/prolog/day2/example.pl compiled, 1 lines read - 490 bytes written, 7 ms 

(1 ms) yes 
| ?- example1(X). 

X = 1 

yes 
| ?- example2(X). 

Fatal Error: Segmentation Violation 

但是,如果我編譯文件:

$ gplc example.pl -o example 
$ ./example 
GNU Prolog 1.4.0 
By Daniel Diaz 
Copyright (C) 1999-2011 Daniel Diaz 
| ?- example1(X). 

X = 1 

yes 
| ?- example2(X). 

X = 2 

yes 

我錯過了什麼?爲什麼它會在第一種情況下發生故障並在第二種情況下運行正常?

(如果有幫助:Mac OS 10.7.2)

回答

1

這可能是gprolog中的一個錯誤。只是報告。

此外,您可能更喜歡使用更受歡迎和支持的SWI-Prolog。

+0

是的,我想是的。在SO上詢問比訂閱郵件列表來報告錯誤更容易,所以我想我先試試這裏:-) – Tomo