Я помню, как читал где-то, что есть проблемы, которые доказуемо сложнее, когда решаются чисто функциональным способом, но я не могу найти ссылку.
Как отмечалось выше, основная проблема заключается в обновлении массива. Хотя компилятор может использовать изменяемый массив в некоторых условиях, необходимо гарантировать, что во всей программе существует только одна ссылка на массив.
Это не только сложный математический факт, но и проблема на практике, если вы не используете нечистые конструкции.
На более субъективном замечании утверждение о том, что все полные по Тьюрингу языки эквивалентны, верно только в узком математическом смысле. Пол Грэм исследует проблему в Обгоняя средние значения в разделе «Парадокс рева».
Формальные результаты, такие как полнота по Тьюрингу, могут быть достоверно верными, но они не обязательно полезны. Задача коммивояжера может быть NP-полной, и все же коммивояжер путешествует все время. Кажется, они не чувствуют необходимости следовать «оптимальному» пути, поэтому теорема не имеет значения.
ПРИМЕЧАНИЕ. Я не пытаюсь разбить функциональное программирование, поскольку оно мне действительно нравится. Просто важно помнить, что это не панацея.