1

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

水果(苹果、橙子)。

你有什么主意吗?

4

1 回答 1

4

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

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

在 Prolog 数据库中,您可以使用assert/1.

因此,您的问题的解决方案是:

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

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

?- fruits(X, Y).
X = apple,
Y = orange.
于 2011-05-04T11:44:34.740 回答