如何删除haskell中列表中的所有元素?

时间:2016-05-20 13:17:32

标签: list haskell

我的出生记录如下。如何编写一个清空列表的函数。 birthBook :: [(字符串,字符串,字符串)] birthBook = [(" DD"" 2"" 4&#34)]

2 个答案:

答案 0 :(得分:1)

Haskell中没有这样的东西。 Haskell是一种语言,其中值不可变。这意味着一旦定义了值,就无法对其进行更改。你错误地使用命令式语言,你可以做到

birthbook = [1,2,3]
birthbook = []
print birthbook // -> []

如果您感到困惑,请查看the Haskell wiki

  

纯功能程序通常对不可变数据进行操作。不是更改现有值,而是创建更改的副本并保留原始副本。由于结构的未更改部分无法修改,因此通常可以在旧副本和新副本之间共享它们,从而节省内存。

答案 1 :(得分:1)

如果通过清空列表,您正在谈论某些

emptyBook :: [(String,String,String)] -> ()

将转为

birthBook=[(...)]

emptyBook birthBook

birthBook=[]

然后你 - 这意味着什么是不可改变的

你做的是通过你的列表/书籍(也许是想象并把它放入状态单子) - 而不是简单地删除旧值并继续[]

或者你进入IO并恢复命令式编程(使用IORef s或其他东西)

相关问题