Haskell,列表不会保存变量?

时间:2016-04-21 14:45:51

标签: list haskell

我遇到了一个小问题,我对Haskell很新,我不明白为什么在追加20后列表是空的。

*Main> list
[]
*Main> add_element
[20]
*Main> list
[]
*Main> 

我的代码:

list = []

add_element = list++[20]

2 个答案:

答案 0 :(得分:8)

在Haskell中,变量是不可变的。在你的情况下:

list

您已定义了一个空列表。

list

list = [] 符号不是改变add_element = list ++ [20] 的函数。它实际上是一个新列表,它通过将空列表(add_element)与单例列表list相结合而构建。

除了list之外,顶级定义[20]永远不会是任何内容。

答案 1 :(得分:4)

Haskell中的值是不可变的。您的代码只是为INSERT INTO [Backup]定义永远不会更改的空列表值

select concat_ws (' ',ipNetFull,ipUsage,broadcast,gateway) from ipNets; 是一个表示list的值,其末尾附加了整数值20。它没有,无法更改add_element值。

看看一些intro Haskell guides,了解不变性意味着什么。