[e-lang] Membrane implementation in repository

Kevin Reid kpreid at mac.com
Wed Mar 28 11:11:14 CDT 2007


On Mar 28, 2007, at 11:47, Mark S. Miller wrote:
> Martin Scheffler wrote:
>> 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.

No separate serialized form is actually needed in this case; in my  
comm system it's only needed because the *messages* must be  
ThreadSharable. For a membrane, which does not have a message stage,  
you just want a system like a deSubgraphKit builder connected to a  
deSubgraphKit recognizer, except without the restrictions of the Data- 
E protocol (or using kludges like what I used for my comm system).

-- 
Kevin Reid                            <http://homepage.mac.com/kpreid/>




More information about the e-lang mailing list