2011-05-04 54 views
1

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

水果(苹果,桔子)。

你有什么想法吗?

回答

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. 
+0

你能解释一下这个代码,请? – selda 2011-05-04 11:57:29

+0

@selda好的,我已经添加了一些解释。这是非常基本的东西,你会在每本Prolog书中找到更好的解释。 – Kaarel 2011-05-04 13:53:00