2011-03-08 115 views
3

我是Prolog的新手。如何在Prolog中执行此操作?

使用这个基本的“数据库”的结构,我想我应该能够查询数据库,找出

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

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

我想不会更改数据库设置(如果可能)。我正在使用以下查询与各自的不想要的结果:

在这里,我是试图问'谁吃鱼?

?- eats(X, fish). 
true. 

在这里,我想问, '千万鲸吃什么?'

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

回答

9

您的查询是正确的,这是您的事实数据库是错误的。原子需要以小写字母开头(或引号)。你开始使用大写字母的马,猴子,鲸鱼,所以它们是变量(并且匹配任何东西)。因此,您当前的数据库相当于:

eats(X, grass). 
eats(X, banana). 
eats(X, fish). 
相关问题