【发布时间】:2020-03-08 10:33:00
【问题描述】:
在我的作业中,我想编写一个函数,将字符串添加到字符串列表中,但我不知道该怎么做。
我以为会是这样的:
AddToLS :: [String] -> String -> [String]
AddToLS ls s = (ls : s)
但这段代码甚至无法编译。
它应该像这样工作:
AddToLS [] "one" =["one"]
AddToLS ["one"] "two" =["one","two"]
AddToLS ["one","two"] "there" =["one","two","there"]
【问题讨论】:
-
您似乎想在列表末尾添加新元素 x 。在 Haskell 中,将它添加到列表的开头会更有效,这只是表达式
(x:list)。这是因为 Haskell 运行时系统只维护一个指向列表开头的指针。请记住,列表可以是无限的,因此通常您不能维护指向列表末尾的指针。 -
附加到这样的列表会产生一个迭代效率非常低的列表。考虑使用不同的数据结构(例如difference list)。