Why do some people shun `if`?

Michael P. empro2@REDACTED
Tue Aug 17 15:12:44 CEST 2021


On Mon, 16 Aug 2021 00:39:21 -0700
Michael Truog <mjtruog@REDACTED> wrote:

> If it is possible to use an "if" expression,
> it can result in better
> source code due to utilizing only guard expressions.

Which could also be done as
a module function, a `fun`, a `case`.

And others argue that 'it can result in worse' too.


> It is possible you
> may need to create an extra variable to use an "if" expression but that
> can help source code be more descriptive.

I might always use `if` as a
match-operator expression-operand (RHS of `=`);
the name of the result telling what the decision is about.

If that is what you mean.


>  A "case" expression [...] can result in more complex beam source code

I consider this premature optimisation.

Did I not read, once upon a time, that both
`if` and `case` were compiled to `fun` anyway ...


> Why prefer guard expressions only?

But `if` is not required for "guard expressions only"?
```
f().
A = 1.
B = 2.
Max = if A >= B -> A
       ; A <  B -> B end.
Best = case true
         of true when A >= B -> A
          ; true when A <  B -> B
        end.
What_if = (fun If() when A >= B -> A
             ; If() when A <  B -> B end)().
Now_this_is = (fun () when A >= B -> A
                 ; () when A <  B -> B end)().
```
(These are months ... years old syntax experiments:
what if I dumped `if`?
Later found out I had also re-invented Kiwi-format.)


> "if" expressions [...] it is best to use them as much as possible.

Not at the statement, not at all at you,
merely about the collision with the thread read before:
that made me laugh myself off the chair.

And it made me remember how wrong I was:
20 years ago I assumed that all such questions
had already been finally resolved in the 20 years before _then_.

~Michael

--

The name "Michael" is, more or less,
a Hebrew version of Arabic 'allahu akbar'.








More information about the erlang-questions mailing list