从列表中创建谓词

时间:2011-05-04 11:37:24

标签: list prolog predicate term

我想从这个列表中创建一个谓词。  我有一个列表[苹果,橙色]。 我尝试制作这个谓词--->

水果(苹果,橘子)。

你有什么想法吗?

1 个答案:

答案 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.