erlang.erl 487 B

1234567891011121314151617181920
  1. %% A process whose only job is to keep a counter.
  2. %% First version
  3. -module(counter).
  4. -export([start/0, codeswitch/1]).
  5. start() -> loop(0).
  6. loop(Sum) ->
  7. receive
  8. {increment, Count} ->
  9. loop(Sum+Count);
  10. {counter, Pid} ->
  11. Pid ! {counter, Sum},
  12. loop(Sum);
  13. code_switch ->
  14. ?MODULE:codeswitch(Sum)
  15. % Force the use of 'codeswitch/1' from the latest MODULE version
  16. end.
  17. codeswitch(Sum) -> loop(Sum).