Widzę korzyści wynikające ze stosowania obiektów mutowalnych i niezmiennych, takich jak obiekty niezmienne, które zabierają wiele trudnych do rozwiązania problemów w programowaniu wielowątkowym ze względu na stan współdzielenia i zapisu. Wręcz przeciwnie, zmienne obiekty pomagają radzić sobie z tożsamością obiektu, zamiast tworzyć nowe kopie za każdym razem, a tym samym poprawiają wydajność i zużycie pamięci, szczególnie dla większych obiektów.
Jedną rzeczą, którą próbuję zrozumieć, jest to, co może pójść nie tak, mając zmienne obiekty w kontekście programowania funkcjonalnego. Jednym z punktów, które mi powiedziano, jest to, że wynik wywoływania funkcji w innej kolejności nie jest deterministyczny.
Szukam prawdziwego konkretnego przykładu, w którym jest bardzo oczywiste, co może pójść nie tak przy użyciu zmiennego obiektu w programowaniu funkcji. Zasadniczo, jeśli jest zły, jest zły niezależnie od OO lub paradygmatu programowania funkcjonalnego, prawda?
Uważam, że poniżej moje własne oświadczenie odpowiada na to pytanie. Ale wciąż potrzebuję jakiegoś przykładu, aby poczuć to bardziej naturalnie.
OO pomaga zarządzać zależnościami i pisać łatwiejszy w utrzymaniu program za pomocą narzędzi takich jak enkapsulacja, polimorfizm itp.
Programowanie funkcjonalne ma również ten sam motyw promowania łatwego do utrzymania kodu, ale za pomocą stylu, który eliminuje potrzebę korzystania z narzędzi i technik OO - jednym z nich, moim zdaniem, jest minimalizacja efektów ubocznych, czystej funkcji itp.