То есть памятью управляет исключительно компилятор? Как мне кажется это влечет за собой невозможность оптимизации кода (поправьте если не так)
Там есть свои приёмы оптимизации. Но компилятор Haskell очень хорош. Чтобы победить Haskell, написав более оптимальный код на Си, надо серьёзно постараться.
P.S. Бывает, конечно, что Haskell тупит. Но в типовых ситуациях он исключительно хорош. Как и JavaScript, например. Поэтому мне и не понятно желание свалить управление памятью на пограммиста, когда уже выработаны стратегии оптимизации для более простых языков. Подружиться со сборщиком мусора проще, чем подстраивать алгоритм под borrowchecker.