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。我会将它放在注释中,但格式会很混乱,所以我会在回答中显示它。