【发布时间】:2020-11-21 23:51:50
【问题描述】:
我是 Haskell 的新手,目前正在尝试理解模式匹配。那么是否有可能从这样的列表中获取最后 3 个元素:
[[1,2,3,4,5,6], [5,6,7,8,9], [10,11,12,13]] 返回类似[(4,5,6), (7,8,9), (11,12,13)] 的内容?
这是我的代码
lastElems [] = []
lastElems ((x:xs):ys) = drop (length xs - 3) xs : lastElems ys
我认为它完成了它应该做的事情,但它作为列表而不是元组中的列表返回。 谁能给我一个关于如何解决这个问题的提示?
这是否也意味着您不能将 (:) 与元组一起使用?提前致谢。
【问题讨论】:
-
drop n xs返回一个列表,而不是一个元组。在这里使用递归可能会更好。 -
谢谢!在这种情况下,
last的递归会以某种方式起作用吗?我知道last只返回最后一项。但是,如果我想要不止一件商品,我该怎么办?