2012-06-25 14 views
10

This page benim için oldukça kafa karıştırıcı olmuştur.newLISP çöp toplama kullanıyor mu?

Diyor ki newLISP içinde

Bellek yönetimi bir çöp toplama algoritması dayanmaz. Bellek işaretlenmemiş veya referans sayılmamıştır. Bunun yerine, yeni oluşturulan bir bellek nesnesinin silinip silinmeyeceği, bellek nesnesi oluşturulduktan hemen sonra yapılır.

newLISP yalnızca bir referans (ORO) kuralı izler. YeniLISP, ifade değerlendirmesi sırasında daha yüksek bir değerlendirme seviyesine ulaştığında, bir sembol tarafından referans alınmayan her bellek nesnesi geçersizdir. NewLISP'deki (semboller ve bağlamlar hariç) nesneler, değer kopyaları ile diğer kullanıcı tanımlı işlevlere geçirilir. Sonuç olarak, her newLISP nesnesi sadece bir referans gerektirir.

Daha aşağıda, görüyorum:

Tüm listeler, diziler ve dizeleri ve yerleşik işlevleri dışında başvuruya göre iletilir.

Bu ikisini anlamıyorum.

NewLISP "nasıl bir çöp toplama algoritmasına güvenmiyor", ve yine de işleri referans olarak iletebilir?
Örneğin, dairesel referanslar durumunda ne yapar ?!

LISP'nin çöp toplama işlemini kullanmaması için mümkün mü? (Her zaman değerlere göre bir şeyler iletebileceğinizi veya her zaman gerekli olabileceğini düşündüğünüzde tam yığın bir tarama gerçekleştirebildiğinizi sanıyorum, ancak performansınıza delirmiş gibi geliyor.)
Eğer öyleyse dairesel referanslarla ilgilenir mi? Değilse, ne demek istiyorsun?

cevap

12

Belki http://www.newlisp.org/ExpressionEvaluation.html okuma http://www.newlisp.org/MemoryManagement.html kağıt daha iyi anlama yardımcı olur. Döngüsel referanslarla ilgili olarak: yeni LISP'de bulunmuyorlar, onları yaratmanın bir yolu yok. Performans sorusu, bu bellek yönetim kağıdının bir alt bölümünde ele alınmıştır ve burada: http://www.newlisp.org/benchmarks/

YeniLISP ile çalışıyor olabilir ve deneyebilirsiniz - örneğin, dairesel bir referans oluşturmaya çalışmak - soruların çoğunu temizleyecektir.

+0

Zihin şişmiş! Yani tüm LISP'ler döngüsel referanslara sahip değil mi ?! Birinin gelmediğini görmedim. :) +1 kesinlikle upvotes çok hak ediyor. Teşekkürler! – Mehrdad