Я бачу переваги змінних та незмінних об'єктів, таких як незмінні об'єкти, забирають багато важких для усунення проблем у багатопотоковому програмуванні завдяки спільному та записуваному стану. Навпаки, що змінюються об'єкти допомагають мати справу з ідентичністю об'єкта, а не створювати нову копію кожного разу, а також покращують продуктивність та використання пам'яті, особливо для великих об'єктів.
Я намагаюся зрозуміти одне, що може піти не так у наявності змінних об'єктів у контексті функціонального програмування. Як і один із моментів, який мені сказали, це те, що результат виклику функцій у різному порядку не є детермінованим.
Я шукаю реальний конкретний приклад, коли дуже очевидно, що може піти не так, використовуючи змінний об'єкт у програмуванні функцій. В основному, якщо це погано, це погано незалежно від ОО або функціональної парадигми програмування, правда?
Я вважаю, що нижче моє власне твердження відповідає на це питання. Але все ж мені потрібен приклад, щоб я відчував це природніше.
OO допомагає керувати залежністю та писати простішу та ремонтоване програму за допомогою таких інструментів, як інкапсуляція, поліморфізм тощо.
Функціональне програмування також має такий самий мотив просування коду, що підтримується, але за допомогою стилю, який виключає необхідність використання інструментів та методів OO - один з яких, я вважаю, полягає в мінімізації побічних ефектів, чистої функції тощо.