[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