【发布时间】:2019-02-18 06:13:59
【问题描述】:
以下段落来自Learn You a Haskell for Great Good!
“在长字符串上重复使用 ++ 运算符时要小心。当您将两个列表放在一起时(即使您将单例列表附加到列表中,例如:[1,2,3] ++ [4] ),在内部,Haskell 必须遍历 ++ 左侧的整个列表。在处理不太大的列表时,这不是问题。但是在一个有 5000 万个条目的列表末尾放置一些东西是需要一些时间。但是,使用 : 运算符(也称为 cons 运算符)将某些内容放在列表的开头是即时的。"
我不知道为什么 Haskell 必须遍历 ++ 左侧的整个列表。
【问题讨论】:
-
你知道列表是在 Haskell 中实现的吗?
(++)还能如何工作? -
否则你将如何构建一个列表?
-
@Carl 我知道 [1,2,3] 实际上只是 1:2:3:[] 的语法糖
-
@GovindParmar 这个问题明确与性能有关(而另一个不是),这里的答案反映了通过以更有效的方式解决该方面的问题。我会把它打开,除非有更好的匹配和很好的答案。
标签: haskell