【发布时间】:2015-02-19 00:35:33
【问题描述】:
我希望能够循环给定列表的每个第二个元素。我可以这样递归地执行此操作:
check validate (x:xs) = check (validate x) (tail xs)
但问题是我需要一个接受列表作为参数的函数,然后返回一个列表,该列表仅由列表中的每个第二个元素组成,从(并包括)列表的第一个元素开始,而我没有认为这是可能的递归。
有人可以告诉我如何使用列表理解吗?这可能是最好的方法。
【问题讨论】:
-
snd . foldr (\x (b, xs) -> (not b, if b then x:xs else xs)) (True, [])
标签: list haskell list-comprehension