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

后端 未结 23 1396
再見小時候
再見小時候 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条回答
  •  囚心锁ツ
    2020-12-05 00:54

    I don't have anything to test this with at work, but something like:

    extractEvery m = map snd . filter (\(x,y) -> (mod x m) == 0) . zip [1..]
    

    should work even on infinite lists.

    (Edit: tested and corrected.)

提交回复
热议问题