Erlang language issues

James Hague <>
Tue Apr 16 20:20:58 CEST 2002


>On a related note, is there a good reason for 'receive' to be a language
>structure, rather than a BIF?  For example, instead of
>
>  receive
>    {foo, X} -> bar(X);
>    {baz, Y} -> quuz(Y)
>  end
>
>couldn't one say, with identical intent,
>
>  Msg = receive(),
>  case Msg of
>    {foo, X} -> bar(X);
>    {baz, Y} -> quuz(Y)
>  end

Ah, but they're not the same!  In the second case you're always pulling a
message out of the mailbox.  In the first case, if the message doesn't match
one of the patterns, then it remains in the mailbox.

I think this is an interesting discussion, one which I unwittingly started
:).  But I suspect that if you wrote down a comprehensive list of the
polluted parts of Erlang (and not just pet peeves about the language
design), it would be a fairly short list.  It might be longer if you include
all of OTP in that list, so junk like the crypto module could get a mention.
This would be a good document to have, I think.



More information about the erlang-questions mailing list