gpt4 book ai didi

prolog - Prolog:不等式运算符

转载 作者:行者123 更新时间:2023-12-04 13:40:03 28 4
gpt4 key购买 nike

我正在使用SICStus Prolog,并且有一些事实:

student('John Henry', 'Maths').
student('Jim Henry', 'Maths').
student('John Alan', 'Maths').
student('Alan Smith', 'Computing').
student('Gary Henry', 'Maths').

我想获得两个学生的共享主题,两个学生都不一样,所以我得到了:
sharedSubject(S1, S2, Sub) :- S1 \== S2, student(S1, Sub), student(S2, Sub).

但是,当我输入:
sharedSubject('John Henry', F, E).                     

我得到 F = 'John Henry'。有人可以指出我要去哪里以及我需要做什么吗?谢谢。

最佳答案

您必须将S1 \== S2目标移到最后。如果您调用sharedSubject/3谓词时未实例化第二个参数(如sharedSubject('John Henry', F, E)一样),则S1 \== S2目标将始终为true:

?- 'John Henry' \== S2.
true.

还:
?- S1 \== S2.
true.

请参阅Prolog系统文档中标准 (\==)/2内置谓词的文档。简而言之,除非您要测试两个变量是否相同,否则在调用此术语 等于谓词时,请确保两个参数都被实例化。

关于prolog - Prolog:不等式运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com