【发布时间】:2019-04-06 23:02:29
【问题描述】:
我在 thisHaskell 页面上阅读了有关在 List 末尾添加元素的信息。
使用该示例,我自己尝试了一下。鉴于以下List,我想在其末尾添加数字56。
例子:
let numbers = [4,8,15,16,23,42]
numbers ++ [56]
我被this 评论甩了:
将一个项目添加到列表的末尾是一个很好的练习,但通常 你不应该在真正的 Haskell 程序中这样做。很贵,而且 表示您正在以错误的顺序构建列表。有 通常是更好的方法。
Researching,我意识到我实际上正在做的是创建一个 List 与 56 作为唯一的元素,我将它与 numbers list 结合起来。那是对的吗?
是否使用++ 将元素添加到List 末尾的正确方法?
【问题讨论】:
-
你知道
[a]是怎么定义的吗?这是一个嵌套结构,就像一个俄罗斯娃娃:列表的“末端”最好被认为是中心。如果您想添加一个新的最小玩偶,您需要打开每一层(O(n) 操作)。尝试自己实现++ -
“它很昂贵,表明您以错误的顺序构建列表。通常有更好的方法”部分非常重要。也许您应该先专注于如何以相反的顺序创建您的
numbers列表,然后像56 : numbers一样进行操作以提高效率。