List Haskell,列表不会保存变量吗?

List Haskell,列表不会保存变量吗?,list,haskell,List,Haskell,我遇到了一个小问题,我对Haskell很陌生,我不明白为什么在添加了20之后列表是空的 *Main> list [] *Main> add_element [20] *Main> list [] *Main> 我的代码: list = [] add_element = list++[20] Haskell中的值是不可变的。您的代码只是为list定义了一个永远不会更改的空列表值 add_element是一个表示list的值,其末尾附加了整数值20。如果没有,则无法更

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

*Main> list
[]
*Main> add_element
[20]
*Main> list
[]
*Main> 
我的代码:

list = []

add_element = list++[20]

Haskell中的值是不可变的。您的代码只是为
list
定义了一个永远不会更改的空列表值

add_element
是一个表示
list
的值,其末尾附加了整数值20。如果没有,则无法更改
列表


看看其中的一些,了解不变性意味着什么。

在Haskell中,变量是不可变的。就你而言:

list = []
您定义了一个空列表

add_element = list ++ [20]
add\u元素
符号不是一个变异的
列表
函数。它实际上是通过将空列表(
list
)与单例列表
[20]
组合而成的新列表


顶级定义
列表
永远不会是除
[]

之外的任何东西。在Haskell中,一切都是不可变的
add_元素
返回一个新列表,列表末尾有
20
。它不会也不能修改
列表
。另请参见我对的回答。我认为函数是带有箭头类型的值
a->b
。根据这个定义,
add_element
不是一个函数。感谢您添加到教程的链接!Haskell中没有“算术为零的函数”这样的东西,“值”和“函数”并不是相互排斥的:例如,lambda就是值。另请参见:(扰流板:否)。感谢您对值与函数的澄清!我已经更新了我的answer@AntalSpector-扎布斯基:也许更准确的说法是哈斯凯尔没有算术这样的概念。它只有值,其中一些可以接受一个参数来产生另一个值。。。这些都是功能。