我对Prolog很陌生,我现在正在学习SWI-Prolog,我想知道我是否可以在查询中使用";“来表示分离性查询条件,例如,我编写了这个查询
?-p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null)并希望检查是否存在p/3事实,其中
我想知道这是否是进行查询的正确方式,以及是否存在一个更简洁的形式,比如
?-p(a,(b;null),(c;null))谢谢!
发布于 2021-04-26 10:46:51
是的你可以。
编写查询
p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null).在?-提示符之后,添加子句的一种更直接的方式
myquery(V1,V2) :- p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null).然后问
?- myquery(V1,V2).(myquery/2是一个新创建的任意谓词)。
顺便提一句,这个条款
myquery(V1,V2) :- p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null).也可以写成“成倍”,即:
myquery :- p(a,b,c).
myquery :- p(a,b,null).
myquery :- p(a,null,c).
myquery :- p(a,null,null).https://stackoverflow.com/questions/67262106
复制相似问题