Dear all,

I need some advice on how to pickle a recursive data structure that may contain 
cells.
I know that the Pickle module only works for stateless data, so I thought I'd 
write a small conversion function that I call before the call to Pickle.save. 
And a similar function to apply after Pickle.load.

The conversion function would look like this:

declare

CellMarker = 'unique-string-marking-cells'

fun {ConvertToStateless D}
   if {Record.is D} then
      {Record.map D ConvertToStateless}
   elseif {Cell.is D} then
      CellMarker#{ConvertToStateless @D}
   else
      D
   end
end


The problem is that this function diverges on cyclic records, like


A = test(1:A)
in
{ConvertToStateless A}


Any idea how I could make this work for such records?

I guess I need to detect cycles in some way. Maybe there is some existing code 
in the standard library that can show me the way?

Thank you for any hints,

Wolfgang

-- 
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! 
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to