Dave, Sure thing, only immutable values will cross network, no Refs. As for the "wait" problem of, as you put it: "the tricky code won't be the remote equivalent of "send", but rather the remote equivalent of "wait", as that requires keeping track of where the remote sends come from" - this can be solved with a system where every node runs a blackboard, that node agents use to "subscribe" for messages of particular type from other nodes. Blackboard is a very well known publish/subscribe mechanism widely used in distributed systems. One old and famous blackboard example is Linda: http://en.wikipedia.org/wiki/Linda_(coordination_language
On Nov 26, 7:19 pm, Dave Griffith <[EMAIL PROTECTED]> wrote: > One big issue to note is that, because of Refs, Clojure agent > semantics can't simply be remoted the way Erlang processes can be. > This is because a message send could include a references to a Ref, > thus exposing mutable state remotely. This breaks, well, just about > everything. > > If you restrict the acceptable arguments to message sends to include > only fully functional values (no passing Refs), then your agent-proxy > idea could probably be made to work. I'm guessing the tricky code > won't be the remote equivalent of "send", but rather the remote > equivalent of "wait", as that requires keeping track of where the > remote sends come from, in a stable and machine-independent way. The > current Clojure implementation seems to do that internally via uuids, > but accessing those remotely could be tricky. > > For extra bonus points, allow for multiple pluggable protocol stacks > and automatic protocol negotiation (which Erlang has, IIRC). > > Unlike some of the other comments in this thread, I'll say I believe > that remote agents in Clojure could be a very powerful idea, > particularly due to integration with the STM. Orchestrating in- > memory and eternal communications takes an enormous amount of effort > in many systems. Having a software transaction which automatically > queues up remote agent sends so that they only occur once the > transaction completes sucessfully would be a very powerful language- > level primitive. > > Code it up and give it a try! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---
