Saya dapat melihat manfaat dari objek yang tidak dapat diubah dan tidak dapat diubah seperti objek yang tidak dapat diubah menghilangkan banyak masalah yang sulit dalam pemrograman multi-threaded karena keadaan bersama dan dapat ditulis. Sebaliknya, objek yang bisa berubah membantu menangani identitas objek daripada membuat salinan baru setiap waktu dan dengan demikian juga meningkatkan kinerja dan penggunaan memori terutama untuk objek yang lebih besar.
Satu hal yang saya coba pahami adalah apa yang salah dengan memiliki objek yang bisa berubah dalam konteks pemrograman fungsional. Seperti salah satu poin yang diceritakan kepada saya adalah bahwa hasil fungsi panggilan dalam urutan yang berbeda tidak deterministik.
Saya mencari contoh nyata nyata di mana sangat jelas apa yang bisa salah menggunakan objek yang bisa berubah dalam pemrograman fungsi. Pada dasarnya jika itu buruk, itu buruk terlepas dari OO atau paradigma pemrograman fungsional, kan?
Saya percaya di bawah pernyataan saya sendiri menjawab pertanyaan ini. Tetapi saya masih membutuhkan beberapa contoh agar saya bisa merasakannya lebih alami.
OO membantu mengelola ketergantungan dan menulis program yang lebih mudah dan dapat dipelihara dengan bantuan alat-alat seperti enkapsulasi, polimorfisme, dll.
Pemrograman fungsional juga memiliki motif yang sama dalam mempromosikan kode yang dapat dipelihara tetapi dengan menggunakan gaya yang menghilangkan kebutuhan untuk menggunakan alat dan teknik OO - salah satunya saya percaya adalah dengan meminimalkan efek samping, fungsi murni dll.