在Prolog中将变量与字符串进行比较
但是现在,每当我输入查询male(X)时,每当X与“john”或“dexter”统一时,它都会显示false,而应该是true。有人能帮忙吗?问题: 在prolog中没有类似于double等于(=)的运算符。它将产生意想不到的输出 解决方案: 仅使用等于(=)进行比较 代码 不建议在Prolog中使用OR运算符 参考资料:在Prolog中将变量与字符串进行比较,prolog,Prolog,但是现在,每当我输入查询male(X)时,每当X与“john”或“dexter”统一时,它都会显示false,而应该是true。有人能帮忙吗?问题: 在prolog中没有类似于double等于(=)的运算符。它将产生意想不到的输出 解决方案: 仅使用等于(=)进行比较 代码 不建议在Prolog中使用OR运算符 参考资料: 这些是原子,不是弦=就足够了。只有两个事实会好上千倍,male(约翰)。男性(德克斯特)。到此为止。请阅读一本书和/或您的系统文档,这是每本书第二页的材料。我同意Dan
male(约翰)。男性(德克斯特)。
到此为止。请阅读一本书和/或您的系统文档,这是每本书第二页的材料。我同意Daniel的观点。你需要阅读一本关于Prolog的基础教程,获得一本像样的入门教材,并通读入门材料。您试图使用Prolog,比如C或其他命令式语言,但它就是不起作用。在这种特殊情况下,如果您查找==/2
的含义,您会发现X==john
失败,因为john
是一个原子,X
是一个未实例化的变量。所以他们不匹配<代码>=/2不是统一运算符。我的答案对您有帮助吗@拉杰斯,你的回答真的帮助了我@jay Joshi!我很乐意帮助你:)如果你愿意,请勾选它作为答案。它会帮助别人。所以其他用户也知道这个问题已经得到了回答。
male(X) :- (X=='john') ; (X=='dexter').
male(X):-
X = 'john'.
male(X):-
X = 'dexter'.
string1(progga).
string2(ikra).
go:-
write("Enter your name"),
nl,
read(X),nl,
string1(Y),
X=@=Y,nl, write("Matched");
write("not Matched"),go2.
/*Another way to*/
go2:-
string1(A),
string2(B),
A=@=B,nl, write("Matched");
write("not Matched").