Да, из OCaml, а оттуда в Хаскель переплыли. Но это не про ФП. Это про попытку сделать императивку функциональной.
ФП, как ни странно, про функции.
реализации монад как представление их eDSL способствуют инкапсуляции на уровне функций — инкапсулируем состояние в функцию-интерпретатор монады, в противовес приватным полям в ООП где методы не имеют доступа к продолжениям чтобы их выполнить, материализовать интерпретацию этого eDSL в коде