[erlang-questions] Reassigning variables

Johnny Billquist <>
Tue Mar 17 22:53:21 CET 2009


Matthew Dempsky wrote:
> On Tue, Mar 17, 2009 at 1:38 PM, Justin Sheehy <> wrote:
>> Single assignment is one of the biggest ways in which Erlang helps
>> reduce bugs.  Please don't try to introduce ways around it, as they
>> will make programs worse.
> 
> I disagree.  There are ways that reassignment can make code easier to
> analyze, but I'm not suggesting people use reassignment in those
> cases.
> 
> Similarly, Erlang doesn't support 'return', but our ad server has
> enough business logic where the code would be much simpler if it did.
> We had some code that was effectively:
> 
>     if requested ad size is bad:
>         return {skip, bad_size}
>     if the game has ads disabled:
>         return {skip, disabled}
>     if the game is filtering a domain:
>         return {skip, domain_filtered}
>     return choose_ad()
> 
> I rewrote this code in 'Erlang style' with a list of funs to check,
> and to short-circuit on the first that returns a skip, when I last
> added to it, and so incrementally it's much less work to add new
> checks than the old code.

Huh? What's wrong with coding that in Erlang as:

foo() ->
   if
     requested ad size is bad ->
       {skip, bad_size};
     the game has ads disabled ->
       {skip, disabled};
     the game is filtering a domain ->
       {skip, domain_filtered};
     _ ->
       choose_ad()
   end.

	Johnny

-- 
Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email:              ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol



More information about the erlang-questions mailing list