Dalam bahasa murni seperti Haskell, semua data tidak dapat diubah dan tidak ada struktur data yang dapat diubah dengan cara apa pun
Sebenarnya itu tidak secara umum benar. Bahasa murni menggunakan evaluasi non-ketat (malas) sehingga evaluasi yang berpotensi semua subekspresi ditangguhkan. Ekspresi yang tidak dievaluasi umumnya tumpukan dialokasikan sebagai "thunk". Ketika diperlukan ekspresi dievaluasi dan thunk dimutasi ke dalam nilai yang dihasilkan.
Strategi dan teknik apa yang digunakan pengumpul sampah dalam menghadapi kemurnian yang tidak akan mereka lakukan sebaliknya?
Satu-satunya hal yang dapat saya pikirkan adalah lubang hitam . Saya tidak ingat melihat hal lain yang baru di sisi GC dalam makalah penelitian Haskell.
Apa yang bekerja dengan sangat baik dalam GC bahasa tidak murni yang tidak dalam konteks murni?
Hambatan tulis GC. Bahasa yang tidak murni cenderung untuk menulis pointer ke tumpukan lebih banyak sehingga mereka cenderung memiliki hambatan menulis mereka lebih dioptimalkan.
Algoritma GC lainnya seperti mark-region jauh lebih layak dalam konteks bahasa tidak murni karena mereka dapat memiliki tingkat alokasi yang jauh lebih rendah daripada bahasa murni.
Apa masalah baru lainnya yang diciptakan bahasa murni untuk GC?
Bahasa murni sangat langka sehingga ada jauh lebih sedikit data tentang bagaimana program murni menggunakan memori dan, oleh karena itu, Anda mulai pada posisi yang lebih buruk ketika mencoba menulis GC untuk bahasa murni.