[erlang-questions] erlang sucks

David Mercer dmercer@REDACTED
Wed Mar 12 18:48:14 CET 2008


Perhaps I am misunderstanding the comma or == operator, but for what values
of X will the following guard evaluate to true?

	when X == '123', X == '456'

Please advise.  Thank-you.

DBM

-----Original Message-----
From: erlang-questions-bounces@REDACTED
[mailto:erlang-questions-bounces@REDACTED] On Behalf Of Sean Hinde
Sent: Tuesday, March 11, 2008 15:06
To: Mats Cronqvist
Cc: Erlang mailing list
Subject: Re: [erlang-questions] erlang sucks


On 11 Mar 2008, at 19:26, Mats Cronqvist wrote:

> Sean Hinde wrote:
>>
>> On 11 Mar 2008, at 12:47, Mats Cronqvist wrote:
>>
>>>
>>> * 'if' is  completely worthless, and should ideally be obsoleted.
>>
>> No, no no! I like 'if' It allows some neat constructs that are  
>> horrible with case.
>
> i was afraid no one was going to bite... still, I'd like an example  
> or 2.

I'm thinking of things like:

case X of
	_ when X == abc; X == xyz ->
		do_abc_or_xyz();
         _ when X == '123', X == '456' ->
		do_123456()
	'123' ->
		do_123_only();
         fred ->
                 do_fred()
end

vs

if
	X == abc;
	X == xyz ->
		do_abc_or_xyz();
         X == '123',
	X == '456' ->
		do_123456();
	X == '123' ->
		do_123_only();
         X == fred ->
                 do_fred()
end

I don't much like the _ when business.

'if' is also useful when you want to branch on a bunch of unrelated  
boolean variables in various combinations:

case {X,Y,Z} of
	{true, false, _} ->
		do_a();
         {false, _, true} ->
		do_b();
	_ ->
		do_c()
end

vs

if
	X and not Y ->
             do_a;
	not X and Z ->
             do_b;
	true ->
             do_c
     end.

I find the second more clearly states the intent. You also don't have  
to remember the positions in the tuple to parse the code (though you  
do need to know that 'not' is stickier* than 'and')

Sean

* IANACS

_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://www.erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list