List Haskell,列表不会保存变量吗?
我遇到了一个小问题,我对Haskell很陌生,我不明白为什么在添加了20之后列表是空的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。如果没有,则无法更
*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-扎布斯基:也许更准确的说法是哈斯凯尔没有算术这样的概念。它只有值,其中一些可以接受一个参数来产生另一个值。。。这些都是功能。