Problem: using fold, take from the list elements which are on the even positions:
GHCi> evenOnly [1..10]
[2,4,6,8,10]
GHCi> evenOnly [\'a\'..
Pattern matching is a perfectly reasonable approach:
evenOnly :: [a] -> [a]
evenOnly (_ : a : as) = a : evenOnly as
evenOnly _ = []
Another option is to use a list comprehension:
evenOnly as = [a | (a, True) <- zip as (cycle [False, True])]
The list comprehension version will likely be a bit more efficient if it fuses with other list processing functions.