<div dir="ltr"><div><div><div><div><div>For things like web form or input validation and transformation, it is often a good idea to make a chain of nested calls.<br><br></div>Imagine your user submitted a form which you store in Data = #{login="", password=""}, you can do something like this:<br><br></div>try<br></div><div>    create_session(check_password(check_login(Data)))<br></div>catch throw:{validation_error, E} -> my_report_error(E)<br></div>end,...<br><br><br></div>Here each function (check_login, check_password, create_session) takes result of the previous function, it can be that same Data, or Data paired with some intermediate results if you wish. To signal an error you use erlang:throw({validation_error, "my error"}) and it will be caught in the catch clause.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-06 0:16 GMT+01:00 qp <span dir="ltr"><<a href="mailto:quantumpotato@gmail.com" target="_blank">quantumpotato@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hi, I am new to Erlang and wrote this code for validating that the Name, Action & Target atoms passed in to validRequest are all valid.<br><br>validRequest(valid, valid, Target) -><br>  case validName(Target) of<br>      true -> true;<br>      false -> false<br>  end;<br>validRequest(valid, Action, Target) -><br>  case validAction(Action) of<br>      true -> validRequest(valid, valid, Target);<br>      false -> false<br>  end;<br>validRequest(Name, Action, Target) -><br>  case validName(Name) of<br>      true -> validRequest(valid, Action, Target);<br>      false -> false<br>  end.<br><br></div>I've since refactored into<br><br>validRequest(Name, Action, Target) -><br>  validName(Name) and validAction(Action) and validName(Target). <br><br></div>I'm curious what a more idiomatic way of writing this would be? I've seen a mix of styles using booleans for return values and tuples, with errors listed. I don't think that's needed here but I'm just curious how you would handle multiple validation checks, especially if they were more complicated than this example. Thank you!<br></div>
<br>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>