<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 6, 2015 at 8:03 PM, Cory Beutler <span dir="ltr"><<a href="mailto:cgbeutler@gmail.com" target="_blank">cgbeutler@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace"><b>also </b>- execute code if any previous condition is met<br>    <snip><br></font><div><div><font face="monospace, monospace">Thank you for humoring my idea. I am new to this mailing list, so sorry if this seems out of line or something.</font></div></div></blockquote></div><br>Seeing many posts on this list which are repeats of ideas seen many times, it's nice to see a new idea. I think the difficulty of making this work is how often you want something only when *all* of the previous conditions are true yet can't conveniently do it another way (e.g., setting a flag). </div><div class="gmail_extra"><br></div><div class="gmail_extra">Your point about writing conditions multiple time is legitimate and happens frequently. Here's an example of something where there is a similar difficulty in writing simple code:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">if foo.a == 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">   ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">elif foo.a == 1 and foo.b == 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">   ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">elif foo.a >= 1 and foo.b >= 0 and foo.c = 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">   ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">elif</font><span style="font-family:monospace,monospace"> ...</span></div><div class="gmail_extra"><font face="monospace, monospace"><br></font></div></blockquote></div><div class="gmail_extra">This is a generic example but I've written code like this many times and there is no simple way to say that all the foo.x values don't need to be computed more than once. Here it is rewritten to avoid recomputation:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">foo_a = foo.a</font></div><div class="gmail_extra"><font face="monospace, monospace">if foo_a == 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">   ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">else:</font></div><div class="gmail_extra"><font face="monospace, monospace">    foo_b = foo.b</font></div><div class="gmail_extra"><font face="monospace, monospace">    if foo_a == 1 and foo_b == 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">        ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">    else:</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">        foo_c = foo.c</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">        if foo_a >= 1 and foo_b >= 0 and foo_c = 0:</font></div><div class="gmail_extra"><font face="monospace, monospace">            ...</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">        else:</font></div><div class="gmail_extra"><font face="monospace, monospace">            ...</font></div><div><font face="monospace, monospace"><br></font></div></blockquote></div><div class="gmail_extra">Much harder to follow the logic. A simpler example where the same recomputation happens is:<br><br><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">x = a and a.b and a.b.c and a.b.c.d</font></div></blockquote><div class="gmail_extra"><br></div><div class="gmail_extra">which becomes</div><div class="gmail_extra"><br></div><div class="gmail_extra"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">x = a and a.b</font></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><span style="font-family:monospace,monospace">if x: x = x.c</span><br></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><font face="monospace, monospace">if x: x = x.d</font></div></blockquote></div><div class="gmail_extra"><br></div><div class="gmail_extra">Ick.</div><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font face="arial, helvetica, sans-serif">--- Bruce<br></font><div><div><font face="arial, helvetica, sans-serif">Check out my new puzzle book: <a href="http://J.mp/ingToConclusions" target="_blank">http://J.mp/ingToConclusions</a></font><br></div></div><div><font face="arial, helvetica, sans-serif">Get it free here: <a href="http://J.mp/ingToConclusionsFree" target="_blank">http://J.mp/ingToConclusionsFree</a> (available on iOS)</font></div><div><br></div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div></div>