[英]Prolog append variable to list
我想將一個綁定到數字的變量N附加到列表中。
N = 1.
append([N], [2,3,4], Z).
Z = [N,2,3,4]. //Wrong output!
我想得到Z = [1,2,3,4]
如何附加變量的數字部分,而不是實際變量本身?
恐怕Prolog沒有像您以前那樣的變量分配,只是變量綁定。 因此,“聲明”
N = 1.
append([N], [2,3,4], Z).
實際上構成兩個完全不相關的查詢 。 幸運的是,可以通過組合查詢來達到您想要的效果:
N = 1, append([N], [2,3,4], Z).
如果確實需要全局變量,則始終可以使用事實或asserta/1
來動態定義一個變量。
另請注意:將來,您可能需要確保在處理數字時使用is
而不是=
。
您正在使用哪個Prolog? 我知道的所有Prologs都會首先給出N = 1
的答案。 這應該清楚地表明,Prolog首先以N = 1
回答了查詢N = 1
,乍看起來似乎有些奇怪。 例如,這是GNU:
| ?- N = 1.
N = 1
yes
| ?-
append([N], [2,3,4], Z).
Z = [N,2,3,4]
yes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.