How to get every Nth element of an infinite list in Haskell?

后端 未结 23 1380
再見小時候
再見小時候 2020-12-04 23:58

More specifically, how do I generate a new list of every Nth element from an existing infinite list?

E.g. if the list is [5, 3, 0, 1, 8, 0, 3, 4, 0, 93, 211, 0

23条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-05 00:37

    Old question but I'll post what I came up with:

    everyNth :: [a] -> Int -> [a]
    everyNth xs n = [snd x | x <- (zip [1..] xs), fst x `mod` n == 0]
    

    I put the list argument before the Int so I can curry the function and a list then map that over a list of Ints if ever I need to.

提交回复
热议问题