#!/usr/bin/env escript main() -> Pid = spawn(fun() -> queue() end), lists:foreach(fun(X) -> Pid ! X end, lists:seq(1, 100)). queue() -> receive M -> printer(fizzbuzz(M)) end, queue(). %% プロセスが途中終了しないように末尾再帰 fizzbuzz(X) -> timer:sleep(100), %% fizzbuzzが重い処理だと仮定 case X of X when X rem 15 =:= 0 -> fizzbuzz; X when X rem 5 =:= 0 -> buzz; X when X rem 3 =:= 0 -> fizz; X -> X end. printer(M) -> io:format("~p~n",[M]).