我是逻辑编程的新手,发现很难理解规则和查询之间的区别,我觉得它们基本相同。任何帮助澄清这一点将不胜感激。
答案 0 :(得分:3)
从句法上讲,它们基本相同; " p(1).
"可以是规则或查询,具体取决于您放置它的位置。
从语义上讲,它们不是。
" p(1).
"作为规则告诉Prolog" p(1)
是真的"。" p(1).
"作为查询询问 Prolog" p(1)
是真的吗?"。
答案 1 :(得分:2)
规则是诸如
之类的定义foo(X) :- bar(X), baz(X).
出现在Prolog程序中。
查询是上面定义的右侧,即(bar(X), baz(X))
或您在Prolog解释器提示符下输入的内容,以使程序运行。
答案 2 :(得分:0)
查询是一个你要求证明的语句(在这样做的过程中可以实例化变量,可以作为“输出”服务器);规则构成用于开发该证据的“程序”。
答案 3 :(得分:0)
你的直觉是正确的:它们都是Horn条款的变体。 Horn子句的基本结构是:
head(...) :- body.
如果你的头部没有身体,你就有了事实。如果你有两者,你有一个谓词。如果您只有一个正文,那么您有一个查询。