2011-05-04 48 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