<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: &#8220;Everything is a function&#8221; in Haskell?</title>
	<atom:link href="http://conal.net/blog/posts/everything-is-a-function-in-haskell/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Sat, 18 May 2013 00:33:37 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: Peter LeFanu Lumsdaine</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-268775</link>
		<dc:creator>Peter LeFanu Lumsdaine</dc:creator>
		<pubDate>Sat, 18 May 2013 00:33:37 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-268775</guid>
		<description>&lt;p&gt;As you say, the position that “everything is a function (to the exclusion of being anything else)”, or more specifically “everything is of some function type A -&gt; B”, is clearly wrong.&lt;/p&gt;

&lt;p&gt;However, the viewpoint “everything can be seen a function (in addition to whatever else it is)” seems quite reasonable.  As others have pointed out, n-ary (curried) functions are a very helpful concept, where formally an n-ary function can be defined as a term of type “A_1 -&gt; ... -&gt; A_n -&gt; B”, for some types A_1 … A…n.  So “map” can be seen both as a unary function from “A -&gt; B” to “[A] -&gt; [B]”, and also as a binary function from “A -&gt; B” and “[A]” to “[B]”.&lt;/p&gt;

&lt;p&gt;But then by the same token, the integer 5 is a nullary function to “Int”; it’s also still an “Int”, but that doesn’t stop it being a nullary function as well.&lt;/p&gt;

&lt;p&gt;So “everything is an n-ary function, for some n” is surely acceptable?  In the context of Haskell, I don’t know how useful it is; but in some mathematical contexts, it’s very fruitful indeed (e.g. the insight that constants could be seen as 0-ary functions was essential for universal algebra, and its cousin the theory of operads).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>As you say, the position that “everything is a function (to the exclusion of being anything else)”, or more specifically “everything is of some function type A -&gt; B”, is clearly wrong.</p>

<p>However, the viewpoint “everything can be seen a function (in addition to whatever else it is)” seems quite reasonable.  As others have pointed out, n-ary (curried) functions are a very helpful concept, where formally an n-ary function can be defined as a term of type “A_1 -&gt; &#8230; -&gt; A_n -&gt; B”, for some types A_1 … A…n.  So “map” can be seen both as a unary function from “A -&gt; B” to “[A] -&gt; [B]”, and also as a binary function from “A -&gt; B” and “[A]” to “[B]”.</p>

<p>But then by the same token, the integer 5 is a nullary function to “Int”; it’s also still an “Int”, but that doesn’t stop it being a nullary function as well.</p>

<p>So “everything is an n-ary function, for some n” is surely acceptable?  In the context of Haskell, I don’t know how useful it is; but in some mathematical contexts, it’s very fruitful indeed (e.g. the insight that constants could be seen as 0-ary functions was essential for universal algebra, and its cousin the theory of operads).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Higham</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-249643</link>
		<dc:creator>Paul Higham</dc:creator>
		<pubDate>Mon, 04 Mar 2013 18:22:47 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-249643</guid>
		<description>&lt;p&gt;What I learned in high school can be succinctly stated, somewhat precisely as follows:&lt;/p&gt;

&lt;p&gt;Let X and Y be sets and let the cartesian product of X and Y, denoted X x Y be the set {(x,y) &#124; x belongs to X, y belongs to Y}.  A function from X to Y, written as f : X -&gt; Y, is a subset of X x Y with the property that for all (x1,y1), (x2,y2) in f, x1 = x2 implies that y1 = y2.&lt;/p&gt;

&lt;p&gt;This is the mathematical definition of of a function and is the one used by Haskell and probably the other functional programming languages as well.  The defining property of the function as stated above is usually referred to as &#039;referential transparency&#039;.  The C programming language started the confusion, and other such languages have perpetuated it, by using the term function to mean something quite different.  In C a function is not necessarily an association at all - it may not take an input and it may not produce an output - it may be pure side effect and even if it does define an association there is no guarantee of referential transparency.&lt;/p&gt;

&lt;p&gt;Adopting this definition, how do you make sense of the phrase &#039;a function with 0 arguments&#039;?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>What I learned in high school can be succinctly stated, somewhat precisely as follows:</p>

<p>Let X and Y be sets and let the cartesian product of X and Y, denoted X x Y be the set {(x,y) | x belongs to X, y belongs to Y}.  A function from X to Y, written as f : X -&gt; Y, is a subset of X x Y with the property that for all (x1,y1), (x2,y2) in f, x1 = x2 implies that y1 = y2.</p>

<p>This is the mathematical definition of of a function and is the one used by Haskell and probably the other functional programming languages as well.  The defining property of the function as stated above is usually referred to as &#8216;referential transparency&#8217;.  The C programming language started the confusion, and other such languages have perpetuated it, by using the term function to mean something quite different.  In C a function is not necessarily an association at all &#8211; it may not take an input and it may not produce an output &#8211; it may be pure side effect and even if it does define an association there is no guarantee of referential transparency.</p>

<p>Adopting this definition, how do you make sense of the phrase &#8216;a function with 0 arguments&#8217;?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Petr Pudlak</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-163360</link>
		<dc:creator>Petr Pudlak</dc:creator>
		<pubDate>Wed, 28 Nov 2012 07:01:00 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-163360</guid>
		<description>&lt;p&gt;I read this very interesting post, but what I really missed is a formal definition of what you call a function here. How can we discuss if something (everything) is a function, if we don&#039;t have a formal definition of it? If someone defines that a function is any Haskell expression then everything is a function. If someone defines that a function is a Haskell expression of type σ→τ for some σ and τ then of course not everything is a function.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I read this very interesting post, but what I really missed is a formal definition of what you call a function here. How can we discuss if something (everything) is a function, if we don&#8217;t have a formal definition of it? If someone defines that a function is any Haskell expression then everything is a function. If someone defines that a function is a Haskell expression of type σ→τ for some σ and τ then of course not everything is a function.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-59773</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 08 Oct 2010 22:55:57 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-59773</guid>
		<description>&lt;p&gt;Russ: the &lt;code&gt;undefined&lt;/code&gt; example is tricky.
In general, we might say that &quot;&lt;code&gt;foo&lt;/code&gt; is a function&quot; exactly if &lt;code&gt;foo&lt;/code&gt; has function type, i.e., &lt;code&gt;foo :: a -&gt; b&lt;/code&gt; for some types &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;.
In that case, &lt;code&gt;undefined&lt;/code&gt; passes the test, since &lt;code&gt;undefined :: a -&gt; b&lt;/code&gt; not only for some types but for &lt;em&gt;all types&lt;/em&gt; &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;.
Of course by this same line of thought, &lt;code&gt;undefined&lt;/code&gt; &quot;is a&quot; number, list, pair, boolean, etc.
However, I&#039;m guessing that the section you quoted about &lt;code&gt;error&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt; was simply careless writing.&lt;/p&gt;

&lt;p&gt;I see what you mean about &quot;nullary constructor&quot; reinforcing the idea of &quot;everything is a function in Haskell&quot;.&lt;/p&gt;

&lt;p&gt;As for a single-word expression, we do have &quot;identifier&quot;.
But it wouldn&#039;t work very well in your example: &quot;The Prelude provides two identifiers to directly cause such errors: ...&quot;.
Identifiers themselves cannot cause errors.
It&#039;s really the values &lt;em&gt;bound&lt;/em&gt; to these two identifiers.
Here are some other attempts and criticisms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&quot;The Prelude defines two identifiers to directly cause such errors: ...&quot;.  Vague relationship between identifiers and causality.&lt;/li&gt;
&lt;li&gt;&quot;The Prelude defines two values to directly cause such errors: ...&quot;.  Values cannot be defined.  Only names.&lt;/li&gt;
&lt;li&gt;&quot;The Prelude provides two definitions for directly causing such errors: ...&quot;.  Again, definitions do not cause anything.&lt;/li&gt;
&lt;li&gt;&quot;The Prelude names two values that directly cause such errors: ...&quot;.  Most accurate in my comprehension.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hadn&#039;t realized that the Haskell report itself was encouraging the sort of confusion I keep noticing.
Thanks for pointing out these statements.
Now I wonder whether we&#039;ve even developed careful enough language to say what we mean here.&lt;/p&gt;

&lt;p&gt;As Bertrand Russell said, &quot;Everything is vague to a degree you do not realize till you have tried to make it precise.&quot;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Russ: the <code>undefined</code> example is tricky.
In general, we might say that &#8220;<code>foo</code> is a function&#8221; exactly if <code>foo</code> has function type, i.e., <code>foo :: a -&gt; b</code> for some types <code>a</code> and <code>b</code>.
In that case, <code>undefined</code> passes the test, since <code>undefined :: a -&gt; b</code> not only for some types but for <em>all types</em> <code>a</code> and <code>b</code>.
Of course by this same line of thought, <code>undefined</code> &#8220;is a&#8221; number, list, pair, boolean, etc.
However, I&#8217;m guessing that the section you quoted about <code>error</code> and <code>undefined</code> was simply careless writing.</p>

<p>I see what you mean about &#8220;nullary constructor&#8221; reinforcing the idea of &#8220;everything is a function in Haskell&#8221;.</p>

<p>As for a single-word expression, we do have &#8220;identifier&#8221;.
But it wouldn&#8217;t work very well in your example: &#8220;The Prelude provides two identifiers to directly cause such errors: &#8230;&#8221;.
Identifiers themselves cannot cause errors.
It&#8217;s really the values <em>bound</em> to these two identifiers.
Here are some other attempts and criticisms:</p>

<ul>
<li>&#8220;The Prelude defines two identifiers to directly cause such errors: &#8230;&#8221;.  Vague relationship between identifiers and causality.</li>
<li>&#8220;The Prelude defines two values to directly cause such errors: &#8230;&#8221;.  Values cannot be defined.  Only names.</li>
<li>&#8220;The Prelude provides two definitions for directly causing such errors: &#8230;&#8221;.  Again, definitions do not cause anything.</li>
<li>&#8220;The Prelude names two values that directly cause such errors: &#8230;&#8221;.  Most accurate in my comprehension.</li>
</ul>

<p>I hadn&#8217;t realized that the Haskell report itself was encouraging the sort of confusion I keep noticing.
Thanks for pointing out these statements.
Now I wonder whether we&#8217;ve even developed careful enough language to say what we mean here.</p>

<p>As Bertrand Russell said, &#8220;Everything is vague to a degree you do not realize till you have tried to make it precise.&#8221;</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Russ</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-59768</link>
		<dc:creator>Russ</dc:creator>
		<pubDate>Thu, 07 Oct 2010 20:23:39 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-59768</guid>
		<description>&lt;p&gt;I feel like even authoritative Haskell materials sometimes phrase things in a way that conflate functions with non-functions.  For example, in the Haskell Report section 3.1:
&quot;The Prelude provides two functions to directly cause such errors: 
error     :: String -&gt; a &#092;
undefined :: a&quot;
Of course these are unusual &quot;functions&quot;, but since the type signature of undefined doesn&#039;t include an arrow it seems like it wouldn&#039;t be quite correct to call it a function.&lt;/p&gt;

&lt;p&gt;It seems that the Haskell Report distinguishes data constructors from functions, but yet they are generally indistinguishable aside from deconstruction in pattern matching, e.g. if I type (&quot;:t (:)&quot;) it appears to be a normal function.  Yet section 3.6 of the report mentions &quot;where True and False are the two nullary constructors from the type Bool&quot;, which makes it sound like data constructors can be thought of as functions, and ones with no arguments are just nullary functions.&lt;/p&gt;

&lt;p&gt;Maybe the source of the problem is that AFAICT there&#039;s no good word to refer to &quot;a single-word expression, either a variable, function, operator, or data constructor&quot;.  In most contexts, those things all act the same.  To say &quot;value&quot; isn&#039;t really correct, as that refers to the underlying result of an evaluation.  To say &quot;expression&quot; doesn&#039;t make it clear that we&#039;re talking about a single word.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I feel like even authoritative Haskell materials sometimes phrase things in a way that conflate functions with non-functions.  For example, in the Haskell Report section 3.1:
&#8220;The Prelude provides two functions to directly cause such errors: 
error     :: String -&gt; a &#92;
undefined :: a&#8221;
Of course these are unusual &#8220;functions&#8221;, but since the type signature of undefined doesn&#8217;t include an arrow it seems like it wouldn&#8217;t be quite correct to call it a function.</p>

<p>It seems that the Haskell Report distinguishes data constructors from functions, but yet they are generally indistinguishable aside from deconstruction in pattern matching, e.g. if I type (&#8220;:t (:)&#8221;) it appears to be a normal function.  Yet section 3.6 of the report mentions &#8220;where True and False are the two nullary constructors from the type Bool&#8221;, which makes it sound like data constructors can be thought of as functions, and ones with no arguments are just nullary functions.</p>

<p>Maybe the source of the problem is that AFAICT there&#8217;s no good word to refer to &#8220;a single-word expression, either a variable, function, operator, or data constructor&#8221;.  In most contexts, those things all act the same.  To say &#8220;value&#8221; isn&#8217;t really correct, as that refers to the underlying result of an evaluation.  To say &#8220;expression&#8221; doesn&#8217;t make it clear that we&#8217;re talking about a single word.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-57956</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Thu, 23 Sep 2010 23:00:30 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-57956</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;… In the class I took, everything is a set: functions, numbers, tuples, lists, etc. So I don’t think it is unreasonable to make things out of lists or tuples. …&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Trinithis: I&#039;m very sympathetic to your perspective here.
And I understand it to be in the category I called &quot;Interested in a different conversation&quot; above:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This one was the hardest of all for me to get so far and was a real lightbulb moment for some people’s belief that everything is a function in Haskell. They don’t believe it. They’d rather talk about something else, such as formalisms in which everything is a function. Or maybe they even have a different notion of what topic is being discussed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which is not at all to say that the alternative topic is any less important than the original one.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>… In the class I took, everything is a set: functions, numbers, tuples, lists, etc. So I don’t think it is unreasonable to make things out of lists or tuples. …</p>
</blockquote>

<p>Trinithis: I&#8217;m very sympathetic to your perspective here.
And I understand it to be in the category I called &#8220;Interested in a different conversation&#8221; above:</p>

<blockquote>
  <p>This one was the hardest of all for me to get so far and was a real lightbulb moment for some people’s belief that everything is a function in Haskell. They don’t believe it. They’d rather talk about something else, such as formalisms in which everything is a function. Or maybe they even have a different notion of what topic is being discussed.</p>
</blockquote>

<p>Which is not at all to say that the alternative topic is any less important than the original one.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Trinithis</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-57840</link>
		<dc:creator>Trinithis</dc:creator>
		<pubDate>Thu, 23 Sep 2010 00:51:38 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-57840</guid>
		<description>&lt;p&gt;Your comment about making everything a list or a tuple brings to mind what I learned in a set theory class. In the class I took, everything is a set: functions, numbers, tuples, lists, etc. So I don&#039;t think it is unreasonable to make things out of lists or tuples.&lt;/p&gt;

&lt;p&gt;As for 7 being a function, I think it could work using similar thinking. Whether or not such thinking gets you anywhere is up to debate though.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Your comment about making everything a list or a tuple brings to mind what I learned in a set theory class. In the class I took, everything is a set: functions, numbers, tuples, lists, etc. So I don&#8217;t think it is unreasonable to make things out of lists or tuples.</p>

<p>As for 7 being a function, I think it could work using similar thinking. Whether or not such thinking gets you anywhere is up to debate though.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Eyal Lotem</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-55963</link>
		<dc:creator>Eyal Lotem</dc:creator>
		<pubDate>Fri, 03 Sep 2010 14:35:48 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-55963</guid>
		<description>&lt;p&gt;I am reading &quot;Haskell School of Expression&quot; (I&#039;m considering using it as learning material for teaching beginners), and it also says (from memory, not exact quote): &quot;You can think of values as functions of 0 arguments&quot;.&lt;/p&gt;

&lt;p&gt;So this may be another source for this.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I am reading &#8220;Haskell School of Expression&#8221; (I&#8217;m considering using it as learning material for teaching beginners), and it also says (from memory, not exact quote): &#8220;You can think of values as functions of 0 arguments&#8221;.</p>

<p>So this may be another source for this.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ameth</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-55373</link>
		<dc:creator>Ameth</dc:creator>
		<pubDate>Fri, 27 Aug 2010 14:42:07 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-55373</guid>
		<description>&lt;p&gt;When I thought that myself a while ago it was because I realised that in Haskell &lt;code&gt;int x; int y = 5 + x;&lt;/code&gt; and &lt;code&gt;int x; int y(){ return 5 + x; }&lt;/code&gt; is equivalent and Haskell makes no distinction between them. In that imperative sense of the word function everything really is a one, but in a purely functional context it&#039;s of course wrong.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>When I thought that myself a while ago it was because I realised that in Haskell <code>int x; int y = 5 + x;</code> and <code>int x; int y(){ return 5 + x; }</code> is equivalent and Haskell makes no distinction between them. In that imperative sense of the word function everything really is a one, but in a purely functional context it&#8217;s of course wrong.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Vag</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-54893</link>
		<dc:creator>Vag</dc:creator>
		<pubDate>Sun, 22 Aug 2010 10:03:08 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-54893</guid>
		<description>&lt;p&gt;Most programmers I&#039;m looking at do not know anything about semantics. They learn languages very partially, by example, by trial and error, remember pairs (situation,action), looking over their friend&#039;s shoulder and reading emotional blog posts. Their models is built from enormously dissimilar kind of bricks than yours. Their concepts are full of inadequate or even meaningless vivid images (e.g. &quot;imperative is &lt;code&gt;how to do&lt;/code&gt;, declarative is &lt;code&gt;what to do&lt;/code&gt;&quot;). They think about programs by imagining actions and tracing -- in your language it will be called nontotal operational thinking muddled with lot of implementation details. In the light of this, it is not relevant what is denoted by what and what domain of discourse is &lt;em&gt;in your&lt;/em&gt; system of knowledge.&lt;/p&gt;

&lt;p&gt;I do not know is my explanation applicable to &lt;em&gt;all&lt;/em&gt; uses of phrase &quot;everything is a function&quot;, but there definitely exist occurances where it applies well.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Most programmers I&#8217;m looking at do not know anything about semantics. They learn languages very partially, by example, by trial and error, remember pairs (situation,action), looking over their friend&#8217;s shoulder and reading emotional blog posts. Their models is built from enormously dissimilar kind of bricks than yours. Their concepts are full of inadequate or even meaningless vivid images (e.g. &#8220;imperative is <code>how to do</code>, declarative is <code>what to do</code>&#8220;). They think about programs by imagining actions and tracing &#8212; in your language it will be called nontotal operational thinking muddled with lot of implementation details. In the light of this, it is not relevant what is denoted by what and what domain of discourse is <em>in your</em> system of knowledge.</p>

<p>I do not know is my explanation applicable to <em>all</em> uses of phrase &#8220;everything is a function&#8221;, but there definitely exist occurances where it applies well.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-54864</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Sun, 22 Aug 2010 02:35:54 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-54864</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;I do not see any other possible meanings of “almost everything in Haskell is a function” phrase.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first interpretation that occurred to me was that (almost) every &lt;em&gt;expression&lt;/em&gt; in (type-correct) Haskell programs denotes a function.  Expressions, not definitions, denote things (values).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>I do not see any other possible meanings of “almost everything in Haskell is a function” phrase.</p>
</blockquote>

<p>The first interpretation that occurred to me was that (almost) every <em>expression</em> in (type-correct) Haskell programs denotes a function.  Expressions, not definitions, denote things (values).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Vag</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-54697</link>
		<dc:creator>Vag</dc:creator>
		<pubDate>Fri, 20 Aug 2010 17:37:56 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-54697</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;you’re shifting the question ... I’m further guessing that you made this shift unconsciously.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;The gist of my translation proposal is that some people use word &quot;language&quot; to denote rather arbitrary notions, for instance programs or associated activities. Also, I do not see any other possible meanings of &quot;almost everything in Haskell is a function&quot; phrase.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I doubt almost all nested definitions are of functions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I stated about all definitions but now I realize that was mistake, so I restrict my statement to top level definitions.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you make this same measurement on a typical C program, won’t you come up with the same conclusion — that almost every top-level definition is of a function?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, indeed. But that may be passed unnoticed by users of EverythingIsA phrases.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>you’re shifting the question &#8230; I’m further guessing that you made this shift unconsciously.</p>
</blockquote>

<p>No.</p>

<p>The gist of my translation proposal is that some people use word &#8220;language&#8221; to denote rather arbitrary notions, for instance programs or associated activities. Also, I do not see any other possible meanings of &#8220;almost everything in Haskell is a function&#8221; phrase.</p>

<blockquote>
  <p>I doubt almost all nested definitions are of functions.</p>
</blockquote>

<p>I stated about all definitions but now I realize that was mistake, so I restrict my statement to top level definitions.</p>

<blockquote>
  <p>If you make this same measurement on a typical C program, won’t you come up with the same conclusion — that almost every top-level definition is of a function?</p>
</blockquote>

<p>Yes, indeed. But that may be passed unnoticed by users of EverythingIsA phrases.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-54660</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 20 Aug 2010 11:08:37 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-54660</guid>
		<description>&lt;p&gt;Vag: If I follow you, you&#039;re shifting the question from (nearly) every &lt;em&gt;thing&lt;/em&gt; being a function to (nearly) every &lt;em&gt;definition&lt;/em&gt; being a function definition. I suspect you shifted the question even further, to (nearly) every &lt;em&gt;top-level&lt;/em&gt; definition being a function definition, since I doubt almost all nested definitions are of functions.   By &quot;top-level&quot;, I mean directly within a module&#039;s outer-most &quot;where&quot;, rather than a &quot;where&quot; or &quot;let&quot; nested more deeply.&lt;/p&gt;

&lt;p&gt;I&#039;m further guessing that you made this shift unconsciously.  Are my guesses correct here?  If so, do you have any insight about how the shift happened?&lt;/p&gt;

&lt;p&gt;If you make this same measurement on a typical C program, won&#039;t you come up with the same conclusion -- that almost every top-level definition is of a function?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Vag: If I follow you, you&#8217;re shifting the question from (nearly) every <em>thing</em> being a function to (nearly) every <em>definition</em> being a function definition. I suspect you shifted the question even further, to (nearly) every <em>top-level</em> definition being a function definition, since I doubt almost all nested definitions are of functions.   By &#8220;top-level&#8221;, I mean directly within a module&#8217;s outer-most &#8220;where&#8221;, rather than a &#8220;where&#8221; or &#8220;let&#8221; nested more deeply.</p>

<p>I&#8217;m further guessing that you made this shift unconsciously.  Are my guesses correct here?  If so, do you have any insight about how the shift happened?</p>

<p>If you make this same measurement on a typical C program, won&#8217;t you come up with the same conclusion &#8212; that almost every top-level definition is of a function?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Vag</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-54571</link>
		<dc:creator>Vag</dc:creator>
		<pubDate>Thu, 19 Aug 2010 19:34:54 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-54571</guid>
		<description>&lt;p&gt;&quot;So is almost everything in Haskell a function? I don’t know how even to make the question precise&quot;&lt;/p&gt;

&lt;p&gt;==&gt; &quot;When you&#039;re looking at typical Haskell program, most definitions are definitions of a functions&quot;.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>&#8220;So is almost everything in Haskell a function? I don’t know how even to make the question precise&#8221;</p>

<p>==&gt; &#8220;When you&#8217;re looking at typical Haskell program, most definitions are definitions of a functions&#8221;.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/everything-is-a-function-in-haskell/comment-page-1#comment-53892</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Sat, 14 Aug 2010 13:54:16 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=175#comment-53892</guid>
		<description>&lt;p&gt;Hm.  So is &lt;em&gt;almost&lt;/em&gt; everything in Haskell a function?  I don&#039;t know how even to make the question precise.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hm.  So is <em>almost</em> everything in Haskell a function?  I don&#8217;t know how even to make the question precise.</p>]]></content:encoded>
	</item>
</channel>
</rss>
