可能的重复:
如何在 Haskell 中获取无限列表的每个第 N 个元素? https://stackoverflow.com/questions/2026912/how-to-get-every-nth-element-of-an-infinite-list-in-haskell
简单的任务 - 我们有一个列表,并且只想保留该列表中的每个第 n 个元素。
在 haskell 中最惯用的方法是什么?
我的脑海中浮现出这样的事情:
dr n [] = []
dr n (x : xs) = x : (dr n $ drop n xs)
但我有一种强烈的感觉,我把问题过于复杂化了。
我的变体是:
each :: Int -> [a] -> [a]
each n = map head . takeWhile (not . null) . iterate (drop n)
速度快,并且能很好地应对懒惰。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)