I'm bugging-in my code. lib_chan does now work as I thoght

here is my test-code, and results. I'm reading プログラミングErlang p. 333
この本についているコードって、結構更新されてるんでしょうかね。現在はR12B3が出たということで、確かにR11B5で動くコードそのままってわけにはいかないかも。
結局、あらかじめ必要なコードをmakeして作っておけということだったので、以下は誰の参考にもならないハマり例ということでした。

$ cat config
{port, 2333}.
{service, banksystem, password, "qwerty", mfa, bank, exchange, }.
$ cat bank.erl
 -module(bank).
 -export([exchange/3]).

exchange(MM, ArgC, ArgS) ->
    io:format("bank:exchange starting~n"
	      "ArgC = ~p ArgS=~p~n", [ArgC, ArgS]),
    loop(MM).

loop(MM) ->
    receive
	{chan, MM,  {todime, Money}} ->
	    MM ! {send, dime(Money)},
	    loop(MM);
	{chan, MM,  {topenny, Money}} ->
	    MM ! {send, penny(Money)},
	    loop(MM);
	{chan, MM,  {tobucks, Money}} ->
	    MM ! {send, bucks(Money)},
	    loop(MM);
	{chan_closed, MM} ->
	    io:format("exchange stopping~n",),
	    exit(normal)
    end.

dime(Dollar) ->
   Dollar * 10.

penny(Dollar) ->
   Dollar * 100.

bucks(Dollar) ->
   Dollar.

$erl
Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.5.5  (abort with ^G)
1> c(bank).
{ok,bank}
2> lib_chan:start_server("./config").

 =ERROR REPORT==== 27-Jun-2008::22:35:27 ===
Error in process <0.31.0> with exit value: {undef,[{lib_chan,start_server,["./config"]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}

 ** exited: {undef,[{lib_chan,start_server,["./config"]},
                   {erl_eval,do_apply,5},
                   {shell,exprs,6},
                   {shell,eval_loop,3}]} **

orz... lib_chan is not bundled to Erlang itself. but "Programming Erlang"...

Just compile 'em all!!!(lib_md5 at last)
Server side (for sample code).

1> c(lib_chan).
{ok,lib_chan}
2> c(lib_chan_cs).
{ok,lib_chan_cs}
3> c(lib_chan_mm).
{ok,lib_chan_mm}
4> c(lib_chan_auth).              
{ok,lib_chan_auth}
5> c("../lib_md5.erl").
{ok,lib_md5}
6> lib_chan:start_server("./config1").
lib_chan starting:"./config1"
ConfigData=[{port,2233},{service,math,password,"qwerty",mfa,mod_math,run,}]
true
mod_math:run starting
ArgC = {yes,go} ArgS=
7> 

Now, I can see where {yes, go} comes from....
Client side.

1> c(lib_chan).
{ok,lib_chan}
2> c(lib_chan_cs).
{ok,lib_chan_cs}
3> c(lib_chan_mm).
{ok,lib_chan_mm}
4> c(lib_chan_auth).
{ok,lib_chan_auth}
5> c("../lib_md5.erl").
{ok,lib_md5}
6> {ok, S} =lib_chan:connect("localhost", 2233, math, "qwerty", {yes, go}).
{ok,<0.58.0>}
7> lib_chan:rpc(S, {factorial,20}).
2432902008176640000