我想从这个列表中创建一个谓词。 我有一个列表[苹果,橙色]。 我尝试制作这个谓词--->
水果(苹果,橘子)。
你有什么想法吗?
答案 0 :(得分:4)
您可以使用=..
(也称为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.