在Prolog中如何做到这一点?

Joh*_*n R 3 prolog

我是Prolog的新手.

使用这个基本的"数据库"结构,我以为我可以查询数据库来查找

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

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

?- eats(X, fish).
true.
Run Code Online (Sandbox Code Playgroud)

在这里,我试图问,"鲸鱼会吃什么?"

?- eats(Whale,X).
X = grass ;
X = banana ;
X = fish.
Run Code Online (Sandbox Code Playgroud)

Lar*_*ski 9

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

eats(X, grass).
eats(X, banana).
eats(X, fish).
Run Code Online (Sandbox Code Playgroud)