prolog之如何在 Prolog 中做到这一点

落叶无声 阅读:151 2024-06-20 12:54:19 评论:0

我是 Prolog 的新手。

使用这个基本的“数据库”结构,我想我可以查询数据库来找出答案

  • 谁吃鱼?
  • 鲸鱼吃什么?

    eats(Horse, grass).   
    eats(Monkey, banana).   
    eats(Whale, fish).  
    

我不想更改该数据库设置(如果可能)。我正在使用以下查询以及相应的不需要的结果:

在这里,我试图问,“谁吃鱼?”

?- eats(X, fish). 
true. 

在这里,我试图问,“鲸鱼吃什么?”

?- eats(Whale,X). 
X = grass ; 
X = banana ; 
X = fish. 

请您参考如下方法:

您的查询是正确的,这是您的事实数据库错误。原子需要以小写字母开头(或被引用)。您以大写字母开头 Horse, Monkey, Whale,因此它们是变量(并且匹配任何内容)。因此,您当前的数据库相当于:

eats(X, grass). 
eats(X, banana). 
eats(X, fish). 


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号