【发布时间】:2021-06-21 16:58:20
【问题描述】:
我正在学习 prolog,并且遇到了“cut and fail”组合,据我了解,它们可以用作保护子句。我已经尝试过使用它,但它没有按预期工作。
old(person1).
old(person2).
skilled(person1).
skilled(person2).
skilled(person3).
skilled(person4).
possible_employee(X):-
old(X),!,fail.
possible_employee(X):-
skilled(X).
在上面的示例中,它应该“过滤掉”old 人,但它会过滤掉所有人并在查询 possible_employee 时返回 false。是我的代码有缺陷还是我对概念的理解有缺陷?
【问题讨论】:
-
你想完成什么?如果你能展示你期望得到的东西,它会更容易帮助你。
-
@NicholasCarey 我期待“possible_employee(X)”将 X 与所有不老且有技能的人(X=person3;X=person4)统一起来,但我得到了一个简单的“假”
标签: prolog swi-prolog