是否可以使用&引用;在SWI Prolog中的查询中?
我是Prolog新手,现在正在学习SWI Prolog,我想知道我是否可以在查询中使用“;”来表示析取查询条件,例如,我编写了这个查询是否可以使用&引用;在SWI Prolog中的查询中?,prolog,Prolog,我是Prolog新手,现在正在学习SWI Prolog,我想知道我是否可以在查询中使用“;”来表示析取查询条件,例如,我编写了这个查询 ?-p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null) 要检查是否存在p/3事实,其中 第一项应为常数“a” 第二项应为常数“b”或null 第三项应为常数“c”或null 我想知道这是否是进行查询的正确方法,是否存在像maybe这样更简洁的表单 ?-p(a,(b;null),(c;null)) 谢谢 是的,你可以 编写查
?-p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null)
要检查是否存在p/3事实,其中
?-p(a,(b;null),(c;null))
谢谢 是的,你可以
编写查询
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) :- p(a,V1,V2),(V1=b;V1=null),(V2=c;V2=null).
然后问
(myquery/2
在这里是一个新创建的任意谓词)
顺便提一下,该条款
myquery(V1,V2) :- 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:-p(a,b,c)。
myquery:-p(a,b,null)。
myquery:-p(a,null,c)。
myquery:-p(a,null,null)。
是,此处的“null”仅表示一个常量,可以用任何其他常量符号替换。