Avoid case nesting

Ulf Wiger etxuwig@REDACTED
Mon Jan 14 18:12:55 CET 2002


I've done this type of thing myself, and think it's a good
solution esp. for tools, where you want a top-level catch and
"pretty-print" error messages.

If all you want to do is nest case statements, you can do
something like this:

case {is_cold_outside(), have_warm_clothes_on()} of
   {true, false} ->
      freezing;
   {true, true} ->
      fairly_comfy;
   {false, true} ->
      sweating
end.

The compiler will not construct the tuple used in the case
pattern.

/Uffe

On Sun, 13 Jan 2002, Vladimir Sekissov wrote:

>Good day,
>
>To avoid many nested cases I use following simple constract:
>
>case catch
>    begin
>        {ok, MgrPid} = start_link(), %if wrong we'll get badmatch here
>        ...
>        {ok, GoodResult}
>    end of
>    {'EXIT', {{badmatch, {error, Error}}, _}} ->
>        {error, Error};
>    {'EXIT', {{badmatch, Error}, _}} ->
>        {error, Error};
>    {'EXIT', Error} ->
>            {error, Error};
>    {ok, Result} ->
>        Result
>end.
>
>Is there better and more elegant approaches?
>
>Best Regards,
>
>Vladimir Sekissov
>




More information about the erlang-questions mailing list