ในภาษาบริสุทธิ์เช่น Haskell ข้อมูลทั้งหมดจะไม่เปลี่ยนรูปและไม่มีโครงสร้างข้อมูลที่มีอยู่สามารถเปลี่ยนแปลงได้ แต่อย่างใด
จริงๆแล้วไม่เป็นความจริง ภาษาที่บริสุทธิ์ใช้การประเมินที่ไม่เข้มงวด (ขี้เกียจ) ดังนั้นการประเมินผลของนิพจน์ย่อยทั้งหมดอาจถูกเลื่อนออกไป นิพจน์ที่ไม่ได้ประเมินค่าโดยทั่วไปจะมีฮีปที่จัดสรรเป็น "thunk" เมื่อต้องการนิพจน์จะถูกประเมินค่าและ thunk จะกลายเป็นค่าผลลัพธ์
นักสะสมขยะใช้กลยุทธ์และเทคนิคใดในการเผชิญกับความบริสุทธิ์ที่ไม่เป็นเช่นนั้น
สิ่งเดียวที่ฉันสามารถคิดเป็นหลุมดำ ฉันจำไม่ได้ว่าได้เห็นสิ่งใหม่ ๆ ทางด้าน GC ในเอกสารการวิจัยของ Haskell
ทำงานได้ดีมากใน GC ของภาษาที่ไม่บริสุทธิ์ซึ่งไม่ได้อยู่ในบริบทที่บริสุทธิ์อะไร
อุปสรรคในการเขียน GC ภาษาที่ไม่บริสุทธิ์มีแนวโน้มที่จะเขียนพอยน์เตอร์ลงในกองมากขึ้นดังนั้นพวกเขาจึงมีแนวโน้มที่จะมีอุปสรรคในการเขียนที่ดีที่สุด
อัลกอริธึม GC อื่น ๆ เช่น mark-region นั้นมีความเป็นไปได้มากกว่าในบริบทของภาษาที่ไม่บริสุทธิ์เนื่องจากสามารถมีอัตราการจัดสรรที่ต่ำกว่าภาษาบริสุทธิ์
ภาษาบริสุทธิ์อื่น ๆ ที่สร้างขึ้นสำหรับ GCs มีปัญหาอะไรบ้าง
ภาษาที่บริสุทธิ์นั้นหายากมากดังนั้นจึงมีข้อมูลน้อยลงมากเกี่ยวกับวิธีที่โปรแกรมบริสุทธิ์ใช้หน่วยความจำและดังนั้นคุณจึงเริ่มต้นในตำแหน่งที่แย่ลงเมื่อพยายามเขียน GC สำหรับภาษาบริสุทธิ์