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
-~----------~----~----~----~------~----~------~--~---

Reply via email to