[erlang-questions] Why does Erlang have control structures?

Richard O'Keefe <>
Tue Aug 28 01:32:32 CEST 2012

On 28/08/2012, at 8:56 AM, Jayson Barley wrote:

> I am not sure I understand why we have them.

"if" is indeed a special case of "case",
and "case" is basically an in-lined function call.
And there is a hint:  if you are going to inline
a function call, what are you going to inline it
*as*?  The possibility must exist in the core
syntax, if nowhere else.

But "try" and "receive" couldn't be anything else.
Without "receive", we'd have to use channels.

> is_greater_than(X, Y) ->
>     is_true(X>Y).

That would never have worked in the Good Old Days,
where X > Y was a guard test and not usable in an
ordinary expression.

> I know that the control structures are a little bit faster, not much, but I find that the function form is more readable.

You will find it hard to get a consensus on that.

More information about the erlang-questions mailing list