Ты в хаскеле можешь описывать на уровне библиотек преобразования которые может совершать компилятор.
Листы пользуются тем что условно fold от unfold можно выполнить без создания списка.
Большинство операций из стдлибы описаны именно через такие фолды и анфолды, они инлайнятся, а потом рерайт рулы фигачат fold unfold в аналогичную по поведению функцию без создания списков