我正在使用 prolog 开发一个类似字典的程序,我的代码如下所示:
define(car,vehicle).
define(car,that).
define(car,has).
define(car,four).
define(car,wheels).
define(wheels,round).
define(wheels,object).
define(wheels,used).
define(wheels,in).
define(wheels,transportation).
defined(X):-define(X,_).
anotherdefined(X):- \+ undefined(X).
undefined(X):- \+define(X,_).
我正在尝试编写一个已定义/1 谓词,它将给我:
?-defined(X).
X = car ;
X = wheels ;
false.
然而,我的 defined/1X=car.
每次计数器都会给我五次(自然),define(car,_).
而我的 anotherdefined/1 只给我true.
什么方法可以停止 prolog 回溯到其他实例define(car,_).
并跳到define(wheels,_).
?
编辑:我写了以下几行来获得我想要的结果与 givedefinedword/1,
listdefined(X):-findall(Y,defined(Y),Z),sort(Z,X).
givedefinedword(X):-listdefined(List),member(X,List).
但是,由于我想要一个有效的谓词(我将在许多其他谓词中使用),所以它超出了目的。这个谓词做了太多的过程。
或者,使用修改代码的谓词会更好吗?say 准备一个已定义单词的列表,并在添加新定义时对其进行修改。
谢谢。