我是Prolog的新手.
使用这个基本的"数据库"结构,我以为我可以查询数据库来查找
鲸吃什么?
eats(Horse, grass).
eats(Monkey, banana).
eats(Whale, fish).
Run Code Online (Sandbox Code Playgroud)我想不要更改该数据库设置(如果可能).我使用以下查询与相应的不需要的结果:
在这里,我试图问,'谁吃鱼?'
?- 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)
您的查询是正确的,这是您的事实数据库是错误的.原子需要以小写字母开头(或引用).你用大写字母开始了马,猴子,鲸鱼,因此它们是变量(并匹配任何东西).因此,您当前的数据库相当于:
eats(X, grass).
eats(X, banana).
eats(X, fish).
Run Code Online (Sandbox Code Playgroud)