Есть ли какие-либо преимущества в использовании объектно-ориентированного программирования (ООП) в контексте функционального программирования (FP)?
Я использовал F # в течение некоторого времени, и я заметил, что чем больше у меня функций нет, тем меньше мне нужно иметь их как методы объектов. В частности, есть преимущества полагаться на вывод типа, чтобы они могли использоваться в максимально широком количестве ситуаций.
Это не исключает необходимости в пространствах имен некоторой формы, которая ортогональна ООП. Также не рекомендуется использовать структуры данных. Фактически, реальное использование языков FP сильно зависит от структур данных. Если вы посмотрите на стек F #, реализованный в F Sharp Programming/Advanced Data Structures, вы обнаружите, что он не является объектно-ориентированным.
На мой взгляд, ООП сильно связан с тем, что методы, которые воздействуют на состояние объекта главным образом, мутируют объект. В чистом контексте FP, который не нужен и не нужен.
Практической причиной может быть возможность взаимодействия с кодом ООП, во многом таким же образом, что F # работает с .NET. Кроме этого, есть ли какие-то причины? И каков опыт в мире Haskell, где программирование более чистое FP?
Я буду признателен за любые ссылки на документы или примеры контрафактного реального мира по этому вопросу.