Prolog 如何在另一个谓词中使用谓词值

Prolog 如何在另一个谓词中使用谓词值,prolog,Prolog,我的规则是这样的 cars(ferrari, 320). cars(ford, 270). cars(mercedes, 280). cars(toyota, 220). 我有一个谓词,我想检查一辆车是否更快 is_faster(Carmodel):- cars(Carmodel,X), X > 250. 因此,当我写得更快(法拉利)时,我希望实现这个目标,但当我使用trace时。我发现X值没有返回 在我的控制台里,如果我这样做了 cars(ferrari,X). X = 32

我的规则是这样的

cars(ferrari, 320).
cars(ford, 270).
cars(mercedes, 280).
cars(toyota, 220).
我有一个谓词,我想检查一辆车是否更快

is_faster(Carmodel):-
  cars(Carmodel,X),
  X > 250.
因此,当我写得更快(法拉利)时,我希望实现这个目标,但当我使用
trace
时。我发现
X
值没有返回

在我的控制台里,如果我这样做了

cars(ferrari,X).
X = 320.
true.

那么这有什么问题,为什么我没有在谓词中获取值。

我认为这应该是一个注释,但是注释不允许格式化文本,这是说明
跟踪所需的

当您按照SWI Prolog中的说明加载代码时,您应该看到:

2 ?- trace.
true.

[trace] 2 ?- is_faster(ferrari).
   Call: (8) is_faster(ferrari) ? creep
   Call: (9) cars(ferrari, _5220) ? creep     % Anonymous variable _5220 (instead of X)
   Exit: (9) cars(ferrari, 320) ? creep       % Found 320 for ferrari
   Call: (9) 320>250 ? creep
   Exit: (9) 320>250 ? creep
   Exit: (8) is_faster(ferrari) ? creep
true.

[trace] 3 ?-

Mercedes
Toyota
是变量。这就是你在代码中使用它们的方式吗?对不起,如果我使用你的代码并查询
Is\u faster(法拉利)
它成功了,这是一个提示。所以我不知道问题出在哪里。如果运行
trace
,您可能会看到使用了一个“匿名”变量,而不是名称
X
。匿名变量以
开头。这很正常。好的,我希望trace显示的是值320,而不是匿名的“变量”。我现在不明白。当我执行
跟踪时,它显示的是320。我会将它放在注释中,但格式会很混乱,所以我会在回答中显示它。