Zero ya persiste ... es capaz de crear su PS si no existe, y hacer bootstrapping contra él si existe, además de guardarse ordenadamente, claro.
Los algoritmos de persistencia no involucran ni un solo algoritmo recursivo.
La prueba se hizo con dos programas, uno que guarda algo en el PS, y otro que espera encontrarlo allí (en ensamblador Zero):
OBJ Persona
ATR + nombre "juan"
ATR + email "juanillho@mixmail.com"
MTH + toString
MSG nombre toString
ASG __rr
STR ": "
MSG __rr concat __acc
ASG __rr
MSG email toString
MSG __rr concat __acc
ASG __rr
RET
ENM
ENO
OBJ PruebaPersistente ConsoleApplication
MTH + doIt
STR "\nComenzando guardado ...\n"
MSG System.console write __acc
SET __gp1 Persona
STR "Persona"
MSG . addAttribute __acc __gp1
STR "\nGuardado de manera persistente\n"
MSG System.console write __acc
RET
ENM
ENO
El segundo programa símplemente accede a Persona para obtener sus datos ...
---
OBJ VerPruebaPersistente
MTH + doIt
MSG System.console lf
SET .Persona
MSG System.console write __acc
MSG System.console lf
RET
ENM
ENO
Y la salida, después de ejecutar ambos, es:
Uncaught exception:
Persona threw EObjectNotFound: in Persona.toString(): _0_10000_1132255372_1311514264_A
De acuerdo :-), no es exactamente lo esperado, pero persona ya puede ser guardado y recuperado sin problemas, excepto algún detalle que habrá que seguir puliendo.