[erlang-questions] style question - best way to test multiple non-guard conditions sequentially
Anthony Ramine
n.oxyde@REDACTED
Mon Jul 8 08:04:34 CEST 2013
With that logic, I see no reason to make if G -> B end different from case {} of {} when G -> B end.
Expanding cond to nested cases earlier in the compilation would mean confusing and misguided warning, e.g. "cond foobar -> ok end" would trigger the warning "no clause will ever match"; instead of the clearer "this clause will crash".
--
Anthony Ramine
Le 8 juil. 2013 à 00:04, ok@REDACTED a écrit :
>
>> I couldn't decide which error should be thrown when the cond test doesn't
>> return a boolean but I have found some references to cond expressions in
>> an old paper [2] (page 37) and decided to stick to their choices.
>
> To be honest, I couldn't see any good reason to make
> cond E1 -> B1 ; ... ; En -> Bn end
> any different from
> case E1 of true -> B1 ; false ->
> ...
> case En of true -> Bn
> end
> ...
> end
> I see great virtue in there being *no* difference whatsoever
> in the semantics of the two, so that the choice is *solely*
> stylistic and rewriting one into the other (either way) *cannot*
> break a working program.
>
> Having looked at that reference, I do not see any advantage for
> the more complicated version. As long as you can find out
> *where* the error was, it just isn't _useful_ to know 'it was a
> cond' rather than 'it was a case'; a program catching errors
> would never want to treat them differently, and a human who has
> been told _where_ can instantly see _what_.
>
>
>
More information about the erlang-questions
mailing list