Agreed. The original note confuses programs (syntax) with functions (semantics).  -- Conal<br><br><div class="gmail_quote">On Thu, Apr 5, 2012 at 8:52 AM, Dan Doel <span dir="ltr">&lt;<a href="mailto:dan.doel@gmail.com">dan.doel@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="im">On Thu, Apr 5, 2012 at 10:14 AM, Grigory Sarnitskiy &lt;<a href="mailto:sargrigory@ya.ru">sargrigory@ya.ru</a>&gt; wrote:<br>


&gt; First, what are &#39;functions&#39; we are interested at? It can&#39;t be the usual set-theoretic definition, since it is not constructive. The constructive definition should imply functions that can be constructed, computed. Thus these are computable functions that should be of our concern. But computable functions in essence are just a synonym for programs.<br>


<br>
</div>This is a flawed premise. The point of working with functions is<br>
abstraction, and that abstraction is given by extensional equality of<br>
functions:<br>
<br>
    f = g  iff  forall x. f x = g x<br>
<br>
So functions are not synonymous with programs or algorithms, they<br>
correspond to an equivalence class of algorithms that produce the same<br>
results from the same starting points. If you can access the source of<br>
functions within the language, this abstraction has been broken.<br>
<br>
And this abstraction is useful, because it allows you to switch freely<br>
between programs that do the same thing without having to worry that<br>
someone somewhere is relying on the particular algorithm or source.<br>
This is the heart of optimization and refactoring and the like.<br>
<br>
There are places for metaprogramming, or perhaps even a type of<br>
algorithms that can be distinguished by means other than the functions<br>
they compute. But to say that functions are that type is false, and<br>
that functions should mean that is, I think, wrong headed.<br>
<span class="HOEnZb"><font color="#888888"><br>
-- Dan<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>