Задача на листы в хаскеле
Нужно написать функцию которая буде удалять элементы листа с индексами которые являются простыми. Главная проблема в том что я не понимаю как работать с индексами в хаскеле.
Ответы (1 шт):
Автор решения: extrn
→ Ссылка
Обращаться к элементу списка по индексу позволяет оператор !!:
Prelude> "test" !! 1
'e'
Prelude> ["x", "y", "z"] !! 2
"z"
Но делать этого вам не придется, хотя бы потому, что каждое такое обращение занимает линейное время.
Проще всего будет использовать генератор списка. Например, так можно отфильтровать элементы с нечетными индексами.
Prelude> [x | (i, x) <- zip [0 ..] ['a' .. 'z'], even i]
"acegikmoqsuwy"
или то же самое в виде композиции преобразований
Prelude> map snd . filter (even . fst) . zip [0 ..] $ ['a' .. 'z']
"acegikmoqsuwy"