[erlang-questions] *current* value?

Gerd Flaig gefla@REDACTED
Thu Oct 18 03:16:42 CEST 2007


YC <yinso.chen@REDACTED> writes:

> Basically - one can bind the value by a particular context (I think in
> Erlang process is the basic unit for a context).  The main use is to reduce
> the # of parameters that needs to be explicitly passed in, which obviously
> makes the function impure (although can be more practical).

to the contrary, the function becomes impure if it has side effects,
like e.g. modifying the process dictionary.

The number of parameters passed for the current state is normally
exactly 1. If the state has structure, most of the time records are
used.

% create record with some default values
-record(state, {current_confusion=none, current_answer=42}).

start() ->
    % initial state record is constructed with defaults
    server_loop(#state{}).

server_loop(State) ->
    receive
        {get_confused, Confusion} ->
            server_loop(State#state{current_confusion=Confusion});
        {set_answer, Answer} ->
            server_loop(State#state{current_answer=Answer})
    end.


HTH

        Goodbyte, Gerd.
-- 
The last thing one knows in constructing a work is what to put first.
                -- Blaise Pascal




More information about the erlang-questions mailing list