<div class="gmail_quote"><div>Hi Luke,</div><div><br></div></div><div class="gmail_quote">On Fri, Jan 16, 2009 at 2:31 AM, Luke Palmer <span dir="ltr">&lt;<a href="mailto:lrpalmer@gmail.com">lrpalmer@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<div class="Ih2E3d"><div>However, I think it is flawed, since the following</div>

<div><br></div><div><div>case c of&nbsp;</div><div>&nbsp;&nbsp; &nbsp; Polar _ _ -&gt; &quot;it&#39;s polar!&quot;</div><div>&nbsp;&nbsp; &nbsp; Rect _ _ -&gt; &quot;it&#39;s rect!&quot;</div><div><br></div><div>seems like valid code but does not make any sense.</div>

</div></div></blockquote><div><br>I think it&#39;s okay, given that we understand the meanings involved.&nbsp; To me it makes about as much sense as this;<br><br>case c of<br>&nbsp;&nbsp;&nbsp; x -&gt; &quot;it&#39;s x!&quot;<br>&nbsp;&nbsp;&nbsp; y -&gt; &quot;it&#39;s y!&quot;<br>

&nbsp;<br>Which is just wrong code.</div></div></blockquote><div><br></div><div><br></div><div>Okay, so you&#39;re saying that these mistakes can&#39;t occur since the it will give a syntax error? Fair point.</div><div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><div>Maybe the capital letters on Polar and Rect are the confusing bit?</div></div></blockquote>
<div><br></div><div>I don&#39;t think so since that is the whole point of Active Patterns in F#. Suppose you initially made something like:&nbsp;</div><div><br></div><div>data Bla = Dog Int | Cat Float</div><div><br></div><div>
and a lot of clients of your code us the Dog and Cat data constructors everywhere.</div><div><br></div><div>After a while you decide that you need to change the Bla data type, maybe give Dog more fields, maybe completely redesign it, maybe not exposing it, but you want to keep existing code backwards compatible. With F# you can write Active Patterns for the old Dog and Cat constructors, so all existing code remains compatible. At least that is the way I understand it, but I have not actually worked yet with Active Patterns, will do so soon :)</div>
<div><br></div><div><br></div></div>