<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>I am with Loïc, I'd be tripped— <br>
    </p>
    <p><b>A flurry of thoughts · · · </b><br>
    </p>
    <pre wrap="">    "When writing a case statement based on a boolean expression"</pre>
    · As we're only working with a boolean(), why use the case at all? <br>
       That may be where the confusion is coming form.<br>
       The big thing happening here is the true or false, I believe
    using variables makes that clearer.<br>
    <p><tt>     foo(Status, Thingy, Assignments) </tt><tt><br>
      </tt><tt>       -></tt><tt><br>
      </tt><tt>                     TF = <a class="moz-txt-link-freetext" href="maps:is_key(Thingy">maps:is_key(Thingy</a>,
        Assignments),</tt><tt><br>
      </tt><tt>                        if</tt><tt><br>
      </tt><tt>           TF =:= false -> {Status,
        Assignments}                                           </tt><tt><br>
      </tt><tt>         ; TF =:= true  ->          Assignment  =
        fomulate_assignment(Thingy),</tt><tt><br>
      </tt><tt>                                 NewAssignments =
        <a class="moz-txt-link-freetext" href="maps:put(Thingy">maps:put(Thingy</a>, Assignment, Assignments),</tt><tt><br>
      </tt><tt>                      {assigned, NewAssignments}</tt><tt><br>
      </tt><tt>                      end.</tt><br>
    </p>
    <p>· I tend to put the shorter clause one near the top(see above),
      so the reader can get take a breath quicker.<br>
    </p>
    <p>· I am have no problem, mentally, saying "otherwise" when I see
      a  "; true ->" because of the way Erlang treats 'if'
      expressions. So it can come second just as easily. <br>
    </p>
    <p>· The other day I read that the brain can handle complex data
      types way better than it candle handle complex logic... I guess
      anything to does not add to the confusion, not unlike the 'not',
      isn't that terrible. ;)<br>
    </p>
    <p>· What Dave Thomas said at last year's conference may apply here:<br>
    </p>
            Programming is Nested Composable Transformation<br>
            Rules should be:<br>
               1. Work out what should be true ->                    
    <br>
               2. Make it true  ( establishing initial conditions )  <br>
               3. Keep it true   ( during transformations )  <br>
    <i>  </i><i>                Also, mentioned,</i><br>
    <i>  </i><i>             · Ask yourself, how does the language
      encourage you to think about things?</i><br>
    <i>  </i><i>             · If you make it easier to think about
      things in terms of reducers, <br>
    </i><i>        </i><i>         </i><i>the quality of programming
      will increase.<br>
      <br>
      Cheers,<br>
      Rob Carbone<br>
      scriptculture.com<br>
    </i><br>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 2/9/18 4:40 AM, Loïc Hoguin wrote:<br>
    </div>
    <blockquote
      cite="mid:36a2d2da-faba-2d11-2668-459451b08ed5@ninenines.eu"
      type="cite">On 02/09/2018 10:31 AM, <a class="moz-txt-link-abbreviated" href="mailto:zxq9@zxq9.com">zxq9@zxq9.com</a> wrote:
      <br>
      [...]
      <br>
      <blockquote type="cite">foo(Status, Thingy, Assignments) ->
        <br>
             case not <a class="moz-txt-link-freetext" href="maps:is_key(Thingy">maps:is_key(Thingy</a>, Assignment) of
        <br>
                 true ->
        <br>
                     Assignment = fomulate_assignment(Thingy),
        <br>
                     NewAssignments = <a class="moz-txt-link-freetext" href="maps:put(Thingy">maps:put(Thingy</a>, Assignment,
        Assignments),
        <br>
                     {assigned, NewAssignments};
        <br>
                 false ->
        <br>
                     {Status, Assignments}
        <br>
             end.
        <br>
      </blockquote>
      [...]
      <br>
      <blockquote type="cite">This isn't a big deal either way of course
        (I find them both equally readable), but I am curious if anyone
        has a strong opinion on the issue and why. Which would you
        prefer to encounter when reading a project to understand how it
        works on github?
        <br>
      </blockquote>
      <br>
      Oh boy. I would definitely get tripped by this. Or at the very
      least have some eyebrow action.
      <br>
      <br>
      I have no problem with it in something like C because there's
      usually no 'else' clause in these cases and it's therefore very
      easy to read the intent.
      <br>
      <br>
      But in Erlang's case what you effectively do is invert the boolean
      value below and that requires a little more gymnastic. And I don't
      think it matches what one would say in a conversation because why
      would you mention the case where nothing happens at all?
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>