Erlang: if or case of
The last few weeks I started to learn Erlang, a functional programming language designed to be very solid. This is my first functional programming language I am really learning. At the university I had a small look at Haskell, but I was never really interested in it.
After writing my first few lines of code, the following question came to my mind: when do we use case of
and when do we use if
? In traditional non-functional programming languages the difference was clear. But the differences blur in functional languages. So what would you write, and why? Given the following example:
case is_pid(Pid) of
true ->
Pid ! {send, ["QUIT :", ?QUITMSG]},
Pid ! quit;
false ->
ok
end
Or
if
is_pid(Pid) ->
Pid ! {send, ["QUIT :", ?QUITMSG]},
Pid ! quit;
_ -> ok
end
Personally I would prefer the second variant, since one can see on the first look what which branch does. What do you think, and why?