gpt4 book ai didi

Prolog 中的谓词列表

转载 作者:行者123 更新时间:2023-12-01 23:25:04 25 4
gpt4 key购买 nike

是否可以定义一个由谓词组成的列表以及如何调用谓词。

另外,是否可以将一个谓词传递给另一个谓词(如传递原子)?

例子:

pre1:- something.
pre2(Predicate1, List):-
call(Predicate1),
append([Predicate1], List, R),
.....

最佳答案

您不能将谓词存储在列表中,但您可以存储术语(或仿函数)并将术语称为目标。

这是一个谓词,用于测试一个术语是否具有由仿函数列表描述的属性:

has_properties([], _).
has_properties([P|Ps], X) :-
Goal =.. [P, X], % construct goal P(X)
call(Goal),
has_properties(Ps, X).

用法:
% is 4 a number, an integer and a foo?
?- has_properties([number, integer, foo], 4).

此查询的答案将取决于您对 foo/1 的定义, 当然。看我的 explanation of =.. 如果需要的话。

编辑 : 正如@false 在评论中报告的那样,没有必要使用 =.. , 自 Goal =.. [P, X], call(Goal)可以用 call(P, X)代替会有同样的效果。学习 =.. 可能还是值得的,不过,您可能会在其他人的代码中遇到它。

关于Prolog 中的谓词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com