2013-10-08 51 views
0

如果我嘗試下面的查詢序言中,我發現了一個錯誤...爲什麼在嘗試使用濃時在Prolog中出現錯誤?

Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.4.1) 
Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam 
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to redistribute it under certain conditions. 
Please visit http://www.swi-prolog.org for details. 

?- conc([a,b], [c,d], [a,b,c,d]). 
ERROR: toplevel: Undefined procedure: conc/3 (DWIM could not correct goal) 

這是因爲我不符合事實和規則一個單獨的文件加載?因爲這看起來很奇怪。下一個查詢例如確實有效:

?- member(apple, [apple, broccoli, crackers]). 
true . 
+1

使用append而不是conc – joel76

+0

你從哪裏得到'conc'是SWI Prolog內置謂詞的想法? – lurker

+0

我正在閱讀Bratko的「Prolog Programming for Artificial Intelligence」,在我看來,conc是內置的東西。也許我必須重新閱讀關於conc的部分... –

回答

1

您正在使用SWI-Prolog作爲解釋器,並且沒有內置謂詞conc。你可以看看append/3(這也是從list library謂詞,但需要注意的是,在SWI雖然它並非總是如此在其他實施這個庫自動加載,如見邑,所以你最好使用use_module)。

您是否正在從Bratko的「Prolog Programming for Artificial Intelligence」學習Prolog? (如果答案是肯定的,你最好試着自己實現這些謂詞:))

+0

是的,我正在研究Bratko的書。爲什麼沒有在書中提到?無論如何,thx! –

+0

因爲本書的重點是在每章中構造謂詞並在以後重用它們。這是一個很好的練習,建立書的版本,並將它們與swi和yap的庫進行比較:) – rano

+0

好吧,設法通過自己構建它們來獲得濃縮和成員工作。謝謝! –

0

查看FAQ。您只能在頂層提示處輸入查詢

相關問題