25 lines
399 B
Elixir
25 lines
399 B
Elixir
defmodule TakeANumber do
|
|
def start() do
|
|
spawn(fn -> loop(0) end)
|
|
end
|
|
|
|
defp loop(state) do
|
|
receive do
|
|
{:report_state, sender_pid} ->
|
|
send(sender_pid, state)
|
|
loop(state)
|
|
|
|
{:take_a_number, sender_pid} ->
|
|
state = state + 1
|
|
send(sender_pid, state)
|
|
loop(state)
|
|
|
|
:stop ->
|
|
nil
|
|
|
|
_ ->
|
|
loop(state)
|
|
end
|
|
end
|
|
end
|