2013-10-08 31 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。您只能在顶层提示处输入查询

相关问题