Если вы предпочитаете использовать библиотечные функции, для подобных ситуаций существует известная хитрость, заключающаяся в том, чтобы заархивировать ввод своим хвостом, то есть начальным списком за вычетом его первого элемента.
λ>
λ> inls = [1, 2, 5, 6, 3]
λ>
λ> let pairs = zip (tail inls) inls
λ> pairs
[(2,1),(5,2),(6,5),(3,6)]
λ>
и итоговый список пар является легкой целью для map
и filter
. Как в:
λ> let myFunction ls = let pairs = zip (tail ls) ls in map fst $ filter (even . snd) pairs
λ>
λ> ls
[1,2,5,6,3]
λ>
λ> myFunction ls
[5,3]
λ>