我想从这个列表中做一个谓词。我有一个清单 [苹果,橙子]。我试着做这个谓词--->
水果(苹果、橙子)。
你有什么主意吗?
=..
您可以使用(也称为 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.