Earlier quoted context omitted.
It should also be noted that handling state like that is not really idiomatic Erlang. State is updated at a process level, thus traditionally you spawn another process which is trivial to do. On the BEAM that is fast enough for 95% of cases. If you really need mutation on local variables for performance reasons, you should already be writing NIFs anyways. State variables are what I think corpos call a "code smell". T…
> It should also be noted that handling state like that is not really idiomatic Erlang. It's not about the state but about intermediate results. When you have a value that you pass to one function, and then you need to pass the result to another function, you're not dealing with a "state" as OTP defines it, unless the calls are asynchronous. Often, they're not, and that's where variable rebinding comes in. Worth noti…
Also, the latest versions of OTP have introduced the `maybe` expression: https://www.erlang.org/eeps/eep-0049