<span class="Apple-style-span" style="font-size: small;">Sometimes I do miss the pragmatic C solution:</span><div><span class="Apple-style-span" style="font-size: small;">- two function pointers that are equal surely represent the same functions (although in C nothing is really sure ;)</span></div>
<div><span class="Apple-style-span" style="font-size: small;">- two function pointers that are different, might or might not represent that same functions.</span></div><div><span class="Apple-style-span" style="font-size: small;"><br>
</span></div><div><span class="Apple-style-span" style="font-size: small;">But this weak equality can sometimes be handy.</span></div><div><span class="Apple-style-span" style="font-size: small;"><br></span></div><div><span class="Apple-style-span" style="font-size: small;">For example, suppose you have a predicate a -&gt; Bool, and a list of these predicates [a -&gt; Bool], but you want to remove all functions that are obviously equal in the C way from the list for optimization... Okay big hack, and one could do this already with reallyUnsafePtrEquality# I guess...</span></div>
<div><span class="Apple-style-span" style="font-size: small;"><br></span></div><div><div class="gmail_quote"><span class="Apple-style-span" style="font-size: small;">On Sat, Apr 18, 2009 at 6:02 PM, John A. De Goes </span><span dir="ltr"><span class="Apple-style-span" style="font-size: small;">&lt;<a href="mailto:john@n-brain.net">john@n-brain.net</a>&gt;</span></span><span class="Apple-style-span" style="font-size: small;"> wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><span class="Apple-style-span" style="font-size: small;"><br>
Two functions are equal iff they have the same domain and range and the same outputs for the same inputs. Simple to state, but extremely difficult to implement in a useful way, and impossible to implement in a perfect way.<br>
<br>
If you had a compiler or algorithm capable of determining function equality, you could use it to prove or disprove arbitrary theorems in mathematics.</span><div><div class="h5">
</div></div></blockquote></div><br></div>