分散関数呼び出し(失敗?)

30分プログラム、その123。分散システムの勉強をしたのでさっそく試す。

でも、なんかうまくいってない。大学で動いたプログラムさえ動かない。あとで、インストールしなおそう。

使い方

サーバ側

$ erl -sname foo
(foo@localhost) 1> rpc_demo:start().
true

クライアント側

$ erl -sname bar
(bar@localhost) 1> rpc:call(foo@localhost,rpc_demo,call,[fun(N)->N+1 end,[1]]).
2

ソースコード

-module(rpc_demo).
-compile(export_all).

start()-> register(srv,spawn(fun()->loop() end)).

loop()->
    receive
	{From,{F,ARGV}}->
	    From ! {srv,apply(F,ARGV)},
	    loop();
	Any -> exit(Any)
    end.
    
call(F,ARGV)-> rpc({F,ARGV}).

rpc(Q)->
    srv ! {self(),Q},
    receive
	{srv,Reply}->
	    Reply;
	Any -> exit(Any)
    end.