[erlang-questions] Erlang elseif

Christian <>
Fri Nov 21 10:37:54 CET 2008


> You can implement
>
>   If <expression1> == true then <result1>
>   elseif <expression2> then <result2>
>   else <result3>
>
> in erlang as follows
>
> if <expresson1> == true ->
>     <result1>;
>    <expression2> ->
>     <result2>;
>    true ->
>     <result3>
> end.

A very important limitation in erlang's "if" expression is that the
tests needs to be guards. If it is okay to execute all tests, every
time, then one can of course do

E1 = <expression1>,
E2 = <expression2>,
if
   E1 -> <result1>;
   E2 -> <result2>;
   true -> <result3>
end


I've had a feeling that there is an if-else chain expression called
"cond" just waiting to happen?

cond
  Test1 ->
      Result1;
  Test2 ->
      Result2;
  Test... ->
      Result...;
   true ->
      yay
end

The cond would in be identical to

case Test1 of
   true -> Result1;
   false ->
      case Test2 of
         true -> Result2;
         false ->
            case Test... of
               true -> Result...
               false -> yay
            end
      end
end

I dont know where I got this impression that "cond" was waiting to
happen. Is it not? Does it need an EEP? Are there objections to it?
Does it need a reference implementation?



More information about the erlang-questions mailing list