首页 > 解决方案 > 为和运算符谓词给出的结果(Prolog)

问题描述

有人被占用,它是由某人是否从事两份工作来定义的。

鉴于以下描述

employe(tom,shopify).
employe(eva,shopify).
employe(eva,ibm).
employe(sam,cisco).
employe(sam,bridehead).

我想修改以下谓词以返回从事两份工作的人。

occupe(X):- employe(X,C1), employe(X,C2).

我不明白为什么当汤姆只从事一份工作时,他会给出一个可能的答案(即我不明白 and 运算符如何,确保员工从事两份独立的工作)。

此外,我已经尝试!在开始时添加,但它没有奏效。

标签: prologpredicate

解决方案


之所以有效,是因为C1并且C2本身并不不同。因此,它统一了C1和。C2shopify

为了确定从事两种不同工作的人员,您应该指定C1并且C2应该不同:

occupe(X):- employe(X,C1), employe(X,C2), C1 \= C2.

推荐阅读