从列表中创建谓词

发布于 2024-11-04 17:05:03 字数 91 浏览 2 评论 0原文

我想从这个列表中创建一个谓词。 我有一个清单[苹果,橙子]。 我尝试做这个谓词--->

水果(苹果、橙子)。

你有什么想法吗?

I want to make a predicate from this list.
I have a list [apple,orange].
I try to make this predicate--->

fruits(apple,orange).

Do you have any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

睫毛上残留的泪 2024-11-11 17:05:03

您可以使用 =.. (也称为 Univ)将列表转换为函子为列表头部的项。例如:

?- a(b) =.. [a, b].
true.

您可以使用 assert/1 将 Prolog 数据库中的术语转换为事实。

您的问题的解决方案是这样的:

?- List = [apple, orange], Term =.. [fruits | List], assert(Term).
List = [apple, orange],
Term = fruits(apple, orange).

您现在可以查询您的新事实以验证它是否存在:

?- fruits(X, Y).
X = apple,
Y = orange.

You can convert a list into a term whose functor is the head of the list using =.. (also called Univ). For example:

?- a(b) =.. [a, b].
true.

You can turn a term into a fact in the Prolog database using assert/1.

The solution to your question is thus:

?- List = [apple, orange], Term =.. [fruits | List], assert(Term).
List = [apple, orange],
Term = fruits(apple, orange).

You can now query your new fact to verify that it's there:

?- fruits(X, Y).
X = apple,
Y = orange.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文