为了获取一个列表
如何在Haskell中实现这个名为
xs
的最后 n
个元素,我可以使用 reverse (take n (reverse xs))
,但这并不是很好的代码(在返回任何东西之前它会将整个列表保留在内存中,并且结果与原始列表不共享)。如何在Haskell中实现这个名为
lastR
的函数?
drop 1 xs
这样的操作时,从列表中删除第一个元素。Haskell通常通过只更改指针以指向原始列表的第二个元素来优化此过程,而不是创建一个新的少1个元素的列表。 - Satvik\n xs -> [x | [x] <- transpose [drop n xs, xs]]
。与此同时:(\n xs -> foldr (\_ r (_:z) -> r z) id (drop n xs) xs)
(与Davorak的foldl'
解决方案相同)。 - Will Ness