在Prolog中,需要创建返回事实值的规则。目前只返回“true”而不是我需要的事实

问题描述 投票:0回答:1

我有一个电影、发行年份、演员、导演的数据库。我需要一个查询,如果年份大于或等于用户输入的给定年份,则返回电影标题。我创建的规则如下。 M 和 Y 是电影标题和年份,我的参数 Y>=QYear 应仅返回 movie(M,Y),其中电影年份大于或等于用户在调用此规则时输入的年份,但相反,运行规则时我只收到 true 输出。任何人都可以对我在这里做错的事情提供一些指导吗?

movies_released_after(QYear, QMovie):- 电影(M,Y), Y>=QYear。

prolog swi-prolog
1个回答
0
投票

在您的示例中,您的子句的后件(

QMovie
左侧的部分)中有一个名为
:-
的变量,该变量未在先行词(
:-
右侧的部分)中使用。

请尝试在调用

QMovie
时也使用
movie/2
。这将导致
QMovie
movie/2
匹配的值统一。

示例:

movies_released_after(QYear, QMovie):- movie(QMovie,Y), Y>=QYear.
© www.soinside.com 2019 - 2024. All rights reserved.