<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Hi,</p>
<p><br>
</p>
<p>Someone who's written more could well point out this is heresy but I find verify* functions very convenient to write if I make them an Erlang assertion. eg:</p>
<p><br>
</p>
<p>isone(A)-><br>
    A = 1.<br>
istwo(A) -><br>
    A = 2.<br>
</p>
<p><br>
</p>
<p>Compare that with a case A of.. for each function. Much more complex verifies still work very well with a binary pattern match. Then I can write a verify like this:</p>
<p><br>
</p>
<p>verify(Data) -></p>
<p></p>
<div>    try<br>
        isone(Data),<br>
        istwo(Data) % As many verify functions as needed here<br>
    of<br>
        _ -> true<br>
    catch<br>
        error:{badmatch, _} -> false<br>
    end.<br>
</div>
<p></p>
<p><br>
</p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> erlang-questions-bounces@erlang.org <erlang-questions-bounces@erlang.org> on behalf of qp <quantumpotato@gmail.com><br>
<b>Sent:</b> Tuesday, 6 December 2016 10:16:16 AM<br>
<b>To:</b> Erlang/OTP discussions<br>
<b>Subject:</b> [erlang-questions] Idiomatically handling multiple validation checks</font>
<div> </div>
</div>
<div>
<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>
</div>
</body>
</html>