[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


More information about the e-lang mailing list