prolog - 在 Prolog 中声明符号

标签 prolog

我正在使用此代码:

item(one, 50, 40).
item(two, 80, 70).
item(three, 100, 55).
item(four, 50, 45).

maxMeanStudy:-  
    findall(M,item(_,M,_),L),
    max_member(Max,L),
    writeln(Max),!.

要访问 item 的中间值,我必须使用 item(_,M,_) 访问它.
如果只有几个条目,这是可以的。但是如果条目很多,很难进入item(_,_,_,_,_,M,_,_,_,_,_,_,_,_,_,_)每次。

有什么方法可以让我最初将结构声明为 item(Name, Val1, Val2)然后我可以使用 item(Val1) 访问它?

最佳答案

只需像这样定义一个辅助谓词:

md_(M) :-
   item(_, M, _).

这样你只需要写一次(可能)大量的下划线。

使用 SICStus Prolog 4.3.3 的示例查询:
| ?- md_(M).
M = 50 ? ;
M = 80 ? ;
M = 100 ? ;
M = 50 ? ;
no

关于prolog - 在 Prolog 中声明符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341797/

相关文章:

prolog - 在序言中组合两个列表

prolog - 对 swi-prolog 等中的每个列表元素执行操作

Prolog回溯

prolog - 为什么我的谓词没有回溯?

prolog - Prolog-回文函

prolog - 如何在序言中加入规则并打印输出

prolog - 如何在Prolog中定义一个要求所有的规则?

prolog - 递归调用规则时如何停止回溯

prolog - Prolog 中的简单 nth1 谓词

prolog - 在序言中随机播放