Riesco a vedere i vantaggi di oggetti mutabili vs immutabili come gli oggetti immutabili che tolgono molto dalla risoluzione dei problemi nella programmazione multi-thread a causa dello stato condiviso e scrivibile. Al contrario, gli oggetti mutabili aiutano a gestire l'identità dell'oggetto piuttosto che creare ogni volta una nuova copia e quindi migliorare anche le prestazioni e l'utilizzo della memoria soprattutto per oggetti più grandi.
Una cosa che sto cercando di capire è cosa può andare storto nell'avere oggetti mutabili nel contesto della programmazione funzionale. Come uno dei punti che mi è stato detto è che il risultato di chiamare funzioni in ordine diverso non è deterministico.
Sto cercando un vero esempio concreto in cui è molto evidente cosa può andare storto usando l'oggetto mutabile nella programmazione delle funzioni. Fondamentalmente se è male, è cattivo indipendentemente da OO o paradigma di programmazione funzionale, giusto?
Credo che di seguito la mia stessa affermazione risponda a questa domanda. Ma ho ancora bisogno di qualche esempio per sentirlo in modo più naturale.
OO aiuta a gestire la dipendenza e scrivere programmi più facili e mantenibili con l'aiuto di strumenti come incapsulamento, polimorfismo ecc.
La programmazione funzionale ha anche lo stesso motivo di promuovere il codice gestibile, ma usando lo stile che elimina la necessità di utilizzare strumenti e tecniche OO - uno dei quali credo sia minimizzare gli effetti collaterali, la pura funzione ecc.