[e-lang] Membrane implementation in repository

Mark S. Miller markm at cs.jhu.edu
Wed Mar 28 10:47:31 CDT 2007


Martin Scheffler wrote:
> Hi,
> I'm playing around with the membrane implementation at
> org.erights.e.facet.makeMembraneAuthor
> Two things:
> 1. It uses a map() function that does not exist.

Fixed and committed. Thanks!


> 2. ConstLists are wrapped, not its contents.
> 
> ? Ref.isData([def _ {}])
> # value: false
> It would be great if I could pass lists of stuff through the membrane,
> where the contents is wrapped, not the whole list. Same with maps I
> guess.

Yes, this is a known problem. It applies not just to ConstLists and ConstMaps, 
but to all PassByCopy objects that aren't DeepPassByCopy. To solve it in 
general requires something like serialization/unserialization.

The same issue comes up in the BootComm system. In E-on-Java, I just special 
cased this for ConstLists, and we could do the same here. However, in E-on-CL, 
Kevin has a much more elegant design. At a low level, his BootComm system 
remains simple. On that he layers something like a 
serialization/unserialization system, but he uses live cycles in the 
serialization output to represent cycles in the original graph. I think 
Kevin's technique could be adapted for use by better membranes.

Kevin, have you posted an explanation of this technique?

-- 
Text by me above is hereby placed in the public domain

     Cheers,
     --MarkM


More information about the e-lang mailing list