2012-06-25 13 views
10

This page è stato abbastanza confuso per me.Il nuovo LISP utilizza la garbage collection?

Dice:

gestione della memoria in newLISP non si basa su un algoritmo di garbage collection. La memoria non è segnata o referenziata. Invece, una decisione sull'eliminazione di un oggetto di memoria appena creato viene effettuata subito dopo la creazione dell'oggetto di memoria.

newLISP segue una regola di un solo riferimento (ORO). Ogni oggetto di memoria non referenziato da un simbolo è obsoleto quando la nuova LISP raggiunge un livello di valutazione più alto durante la valutazione dell'espressione. Gli oggetti in newLISP (esclusi simboli e contesti) vengono passati dalla copia del valore ad altre funzioni definite dall'utente. Di conseguenza, ogni nuovo oggetto LISP richiede solo un riferimento.

Più in basso, vedo:

Tutte le liste, array e stringhe sono passati dentro e fuori di funzioni incorporate per riferimento.

Non riesco a dare un senso a questi due.

Come può newLISP "non fare affidamento su un algoritmo di garbage collection", e tuttavia passare le cose per riferimento?
Ad esempio, cosa farebbe nel caso di riferimenti circolari ?!

È possibile anche possibile per un LISP per non utilizzare la garbage collection, senza compromettere le prestazioni? (Suppongo tu possa sempre passare le cose in base al valore, oppure puoi sempre eseguire una scansione completa ogni volta che pensi che sia necessario, ma a me sembra che ciò danneggerebbe le tue prestazioni.)
Se sì, come avrebbe a che fare con riferimenti circolari? In caso contrario, cosa intendono?

risposta

12

Forse leggere http://www.newlisp.org/ExpressionEvaluation.html aiuta a comprendere meglio la carta http://www.newlisp.org/MemoryManagement.html. Riguardo ai riferimenti circolari: non esistono in newLISP, non c'è modo di crearli. La domanda relativa alle prestazioni è trattata in un sottocapitolo di quel documento di gestione della memoria e qui: http://www.newlisp.org/benchmarks/

Potrebbe funzionare e sperimentare con la nuova LISP, ovvero provare a creare un riferimento circolare: chiarirà la maggior parte delle domande.

+0

Mente soffiata! Quindi non tutti i LISP hanno riferimenti circolari ?! Non l'ho visto arrivare. :) +1 merita sicuramente un sacco di voti positivi. Grazie! – Mehrdad