[erlang-questions] Sending funs between nodes

Kirill Zaborski <>
Wed Aug 29 21:28:33 CEST 2007


I was trying to do the following:
1) a module on node X -
-------------------
-module(test1).
-export([go/0]).

go() ->
P = spawn(fun() -> receive X -> X() end end),
register(rrr, P).
-------------------
2) a module on node Y -
-------------------
-module(test2).
-export([go/0]).

go() ->
{rrr, }!fun() -> io:format("bar",[]) end.
-------------------

LOKI is my hostname :)

So If I run test1:go() and then test2:go() on other node I get

=ERROR REPORT==== 29-Aug-2007::22:34:29 ===
Error in process <0.35.0> on node '' with exit value:
{undef,[{shell_defau
lt,fun_to_list,[#Fun<erl_eval.20.62269157>]},{erl_eval,do_apply,5},{shell,exprs,
6},{shell,eval_loop,3}]}

** exited: {undef,[{shell_default,fun_to_list,[#Fun<erl_eval.20.62269157>]},
                   {erl_eval,do_apply,5},
                   {shell,exprs,6},
                   {shell,eval_loop,3}]} **

It looks like fun needs code of the module where it was defined. Why is it
so?
is there any way around this issue? Or I need the same beams on all the
nodes?


Best regards,
Kirill Zaborski.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070829/ee586ac3/attachment.html>


More information about the erlang-questions mailing list