This page ha sido bastante confuso para mí.¿NewLISP usa la recolección de basura?
Dice:
administrar la memoria en newLISP no se basa en un algoritmo de recolección de basura. La memoria no está marcada ni contada por referencia. En su lugar, la decisión de eliminar un objeto de memoria recién creado se realiza justo después de que se crea el objeto de memoria.
newLISP sigue una regla de referencia única (ORO). Cada objeto de memoria no referenciado por un símbolo está obsoleto una vez que newLISP alcanza un nivel de evaluación más alto durante la evaluación de la expresión. Los objetos en newLISP (sin incluir símbolos y contextos) pasan por la copia de valor a otras funciones definidas por el usuario. Como resultado, cada nuevo objeto LISP solo requiere una referencia.
Más abajo, veo:
Todas las listas, matrices y cadenas se pasan dentro y fuera de las funciones incorporadas por referencia.
No puedo entender estos dos.
¿Cómo puede newLISP "no confiar en un algoritmo de recolección de basura", y aún así pasar cosas por referencia?
Por ejemplo, ¿qué haría en el caso de las referencias circulares?
¿Es posible posible por un LISP para no usar la recolección de basura, sin hacer que el rendimiento se vaya por el desagüe? (Supongo que siempre puede pasar las cosas por valor, o siempre puede realizar un escaneo de montón completo cada vez que lo crea necesario, pero entonces me parece que eso dañaría su desempeño de manera insana).
Si es así, cómo ¿trataría con referencias circulares? Si no, ¿qué significan?
Mind blown! Entonces, ¿no todos los LISP tienen referencias circulares? No vi que viniera uno. :) +1 definitivamente merece muchos votos positivos. ¡Gracias! – Mehrdad