[erlang-questions] Can I do var-assignment in a function?

Joe Armstrong <>
Wed Jul 23 18:56:04 CEST 2008


On Wed, Jul 23, 2008 at 3:29 PM, Roessner, Silvester
<> wrote:
> Circular Function wrote:
>>   extract(Str) ->
>>     A = string:tokens(Str," ").
>>     lists:sort(A).
>
> I think the comma was just a typo and not the actual question. Am I right?
>
> You want var-assignment because you want to write something like:
>
>        extract(Str) ->
>             A = string:tokens(Str," "),
>             A = lists:sort(A),
>             A = do_something_else(A),
>             A = and_finalize(A).

extract(Str) ->
     Toks = string:tokens(Str, ""),
     SortedToks1 = lists:sort(Toks),
     ...

:-)

/J





>
> But that doesn't work. You have to use a new variable each time.
>
>        extract(Str) ->
>             A1 = string:tokens(Str," "),
>             A2 = lists:sort(A1),
>             A3 = do_something_else(A2),
>             A4 = and_finalize(A3).
>
> Or this hard to read version
>
>        extract(Str) ->
>             A = and_finalize(do_something_else(lists:sort(string:tokens(Str," ")))).
>
> This approach of functional languages has at least two big advantages:
>
>        1. You don't accidentally overwrite variables
>        2. You can see all results in the debugger.
>
> And there should be no runtime penalty. Since the processor had to allocate and de-allocate the same amount of memory in each of the 3 cases -even if you don't see this in the code.
>
> mit freundlichen Grüßen / with kind regards
>
> Silvester Rößner
> This message is intended for a particular addressee only and
> may contain business or company secrets. If you have received
> this email in error, please contact the sender and delete the
> message immediately. Any use of this email, including saving,
> publishing, copying, replication or forwarding of the message
> or the contents is not permitted.
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
>



More information about the erlang-questions mailing list