[erlang-questions] How to do counters?

Jarrod Roberson <>
Fri Jun 26 03:45:58 CEST 2009

On Thu, Jun 25, 2009 at 7:10 PM, Vance Shipley <> wrote:

> On Thu, Jun 25, 2009 at 06:29:26PM -0400, Jarrod Roberson wrote:
> }  what do you mean by "internal state" I don't understand how a process
> would
> }  store any mutable state
> http://erlang.org/doc/man/gen_server.html#Module:handle_call-3
> The last argument in gen_server/gen_fsm callback functions
> is State.  It's "mutable" by the fact that the return value
> includes NewState.
> In functional programming everything a function needs to know
> is passed in as arguments.  Tail recursion keeps the balls in
> the air.
>        loop(State) ->
>                ...
>                loop(NewState).
> --
>         -Vance

I still don't see how this is supposed to work.
If I do tail recursion, how do I return anything, if the loop(NewState)
needs to be the last thing I do?

If I have functions inc() dec() and current() which should return the
current value of the counter, how do all these functions share state? I
can't have the client pass in the state because I will have many client
processes calling the counter functions.

There seems to be something I am missing that you guys know and I don't.

More information about the erlang-questions mailing list