簡體   English   中英

Prolog將變量追加到列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM