1

如果我在 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 .
4

2 回答 2

2

conc您正在使用 SWI-Prolog 作为解释器,并且没有附带内置谓词。您可以查看append/3(这也是list library的谓词,但请注意,在 SWI 中,此库是自动加载的,而在其他实现中并非总是如此,例如,请参阅 Yap,因此您最好使用use_module)。

你是从 Bratko 的“人工智能的 Prolog 编程”中学习 Prolog 吗?(如果答案是肯定的,你最好尝试自己实现这些谓词:))

于 2013-10-09T05:49:34.537 回答
0

请参阅常见问题解答。您只能在顶级提示中输入查询。

于 2013-10-08T20:43:40.807 回答