我有这段代码:
% Family tree
female(pen).
male(tom).
male(bob).
female(liz).
female(pat).
female(ann).
male(jim).
parent(pam, bob).
parent(tom, bob).
parent(tom, liz).
parent(bob, ann).
parent(bob, pat).
parent(pat, jim).
我收到此错误:
Warning: Clauses of female/1 are not together in source-file
Warning: Clauses of male/1 are not together in source-file
此错误的目的是什么?
我的意思是,文件编译并运行得很好,我知道错误的含义。但为什么呢?这只是强制执行最佳做法的通知吗?
我对逻辑编程很陌生 谢谢!
答案 0 :(得分:14)
正确,这是强制执行最佳实践的警告,即将所有相关子句放在源文件中。除此之外,源文件中的子句彼此接近并不重要,只要它们的相对顺序不会改变。
答案 1 :(得分:6)
警告鼓励最佳做法并帮助发现拼写错误。这是一个错字的例子:
small(ant).
small(fly).
small(molecule).
smell(sweet).
smell(pungent).
small(floral).
这个错误很难被发现,但幸运的是编译器发出警告:
Warning: /tmp/test.pl:7:
Clauses of small/1 are not together in the source-file
通过警告和行错误,可以更快地找到并纠正拼写错误。
ISO Prolog提供了discontiguous/1
指令,用于对特定谓词的此警告进行静音。见规范的7.4.2.3节。它的使用方式如下:
:- discontiguous small/1.