Я не являюсь ни одним из них, но знаю ответ.
В каноническом ФП конечно есть данные (состояние).
- Данные неизменяемы.
- "Изменение" неизменяемых данных выполняется с помощью копирование нужных частей.
- Все функции чистые и преобразуют одни неизменяемые данные в другие (тоже неизменяемые).
- Единственные изменяемые данные - это указатели (биндинги) на стеке, которые указывают на нужные куски неизменяемых данных.
- Построение системы выполняется с помощью композиции таких функций и никак иначе.
Таким образом можно сэмулировать изменяемый граф объектов из ООП, машину Тьюринга и любые вычислимые функции (но никто не обещает, что это будет дёшево в вычислительном плане, в Хаскеле применяется множество приёмов для достижения практической эффективности).
Ээ, это получится объект, в котором все поля иммутабельны? И тогда, получается, что модифицировать одно поле невозможно, методы будут полностью новые объекты создавать?
Окей, согласен, можно натянуть.