我遇到了一个小问题,我对Haskell很新,我不明白为什么在追加20后列表是空的。
*Main> list
[]
*Main> add_element
[20]
*Main> list
[]
*Main>
我的代码:
list = []
add_element = list++[20]
答案 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,了解不变性意味着什么。