gpt4 book ai didi

prolog - 关于序言中的规则。 。

转载 作者:行者123 更新时间:2023-12-02 09:33:55 24 4
gpt4 key购买 nike

在我的程序中,我有一些规则,例如:

tellme(X) :- knows(X).
tellme(friends1(X)) :- tellme(X).
tellme(friends2(X)) :- tellme(X).
tellme(friends3(X)) :- tellme(X).
.
.
.
tellme(friends25(X)) :- tellme(X).

现在这个friends1,friends2,friends3 .....依赖于N,这是一个变量。在这里,例如我的 N 值是 25。那么是否可以编写一个规则来生成这些规则直到 N,还是我必须手动编写这些规则 N 次。欢迎任何建议或解决方案。非常感谢您的关注。

最佳答案

您可以使用 term expansion 在大多数现代 Prolog 环境中生成任何类型和数量的代码,在 universal operator 的帮助下。以下示例适用于 SWI:

term_expansion(gen_tellme(N), Terms) :-
findall((tellme(F) :- tellme(X)),
(between(1, N, I), atom_concat(friend, I, Fi), F =.. [Fi, X]),
Terms).

gen_tellme(25). % generates 25 copies of the tellme clause.

也就是说,将信息嵌入谓词名称(即 friend 号码)通常不是一个好的设计。为什么不使用 friend(N, X) 重写代码,其中 N 是数字?

关于prolog - 关于序言中的规则。 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288507/

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