<div dir="ltr"><span style="color:rgb(80,0,80);font-size:13px">Hi, aman,</span><br style="color:rgb(80,0,80);font-size:13px"><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">First, IMO, on Erlang, every function is real function, and every function returns something, that it depends on you to check what returned. Though a language with return statement guide programmers to check things returned but ignore those functions without a return statement. The later one is so-called 函式 in Chinese, a “function-like procedure.” It’s a weird concept of some function without a return statement, that in definition it does not return thing, but in memory of real computer system it return such as 0 but actually it does not return 0 because the 0 is a symbol to represent ‘nothing'.</span><br style="color:rgb(80,0,80);font-size:13px"><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">For the second question, how to avoid cascade case statement, there are at least two way to do. The first way, case statement is similar to function statement, and if some thing goes through many states in cascade case statement, it seams to be some thing going through some functions and then becoming some state. The second way, if items existing in cascade case statement do not just occur in condition within case statement, layers of case statement may be reduced by putting items together: for example,</span><br style="color:rgb(80,0,80);font-size:13px"><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">case A of</span><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">   ok -> case B of … end;</span><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">   {error, _} -> …</span><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">end</span><br style="color:rgb(80,0,80);font-size:13px"><br style="color:rgb(80,0,80);font-size:13px"><span style="color:rgb(80,0,80);font-size:13px">may be</span><br style="color:rgb(80,0,80);font-size:13px"><div><span style="color:rgb(80,0,80);font-size:13px"><br></span></div><div><span style="color:rgb(80,0,80);font-size:13px">case {A, B} of</span></div><div><span style="color:rgb(80,0,80);font-size:13px">    {ok, ok} -> ...;</span></div><div><span style="color:rgb(80,0,80);font-size:13px">    {{error, _}, _} -> ...;</span></div><div><span style="color:rgb(80,0,80);font-size:13px">    {_, {error, _}} -> ...</span></div><div><span style="color:rgb(80,0,80);font-size:13px">end</span></div><div><span style="color:rgb(80,0,80);font-size:13px"><br></span></div><div><span style="color:rgb(80,0,80);font-size:13px">/Y-H</span></div><div><span style="color:rgb(80,0,80);font-size:13px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 16, 2014 at 4:05 PM, aman mangal <span dir="ltr"><<a href="mailto:mangalaman93@gmail.com" target="_blank">mangalaman93@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi everyone,<div><br></div><div>I have seen similar questions before on the forum but I could never understand the reason behind it. Is it due to theoretical reasons such as <i>return </i>statement makes it hard to reason about the program or practical reasons that it is hard to implement it (this doesn't seem right but I cannot think of anything else)?</div><div><br></div><div>Moreover, is there a good alternate to avoid nested case statements? Making more functions just seems tedious. Using <i>catch </i>statement seems another good alternate but my intuition is that it is not good practice, is it?</div><div><br></div><div>Thank you</div><span class="HOEnZb"><font color="#888888"><div>Aman Mangal</div><div><a href="http://www.prism.gatech.edu/~amangal7" target="_blank">www.prism.gatech.edu/~amangal7</a></div>
</font></span><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div><br></div>Best Regards.<div><br></div><div>--- Y-H. H.</div><div><br></div></div>
</div>