Ага-ага, то-то все пишут операции с коллекциями на комбинаторах сейчас
Где-то была статья где сравнивалось два алгоритма написанных на хаскеле. Разница между ними была в том, что в одном находилась функция:
copy :: List a -> List a
copy [] = []
copy (x : xs) = x : (copy xs)
И этот вариант с лишней функцией срабатывал в 5 раз быстрее своего аналога