<?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: Is Haskell a purely functional language?</title>
	<atom:link href="http://conal.net/blog/posts/is-haskell-a-purely-functional-language/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language</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: Andy Melnikov</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-90755</link>
		<dc:creator>Andy Melnikov</dc:creator>
		<pubDate>Fri, 18 Nov 2011 10:50:15 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-90755</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;Consider that IO includes exception-handling&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;IO also includes concurrency, which is even more troublesome.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>Consider that IO includes exception-handling</p>
</blockquote>

<p>IO also includes concurrency, which is even more troublesome.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Chakravarty</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-84703</link>
		<dc:creator>Manuel Chakravarty</dc:creator>
		<pubDate>Mon, 01 Aug 2011 00:23:02 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-84703</guid>
		<description>&lt;p&gt;Vinod, some of it call it &quot;purely functional programming&quot;.&lt;/p&gt;

&lt;p&gt;Conal, nice observation about Landin. I have to say &quot;denotative&quot; is an appealing term.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Vinod, some of it call it &#8220;purely functional programming&#8221;.</p>

<p>Conal, nice observation about Landin. I have to say &#8220;denotative&#8221; is an appealing term.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Vinod</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-42781</link>
		<dc:creator>Vinod</dc:creator>
		<pubDate>Thu, 01 Apr 2010 04:18:36 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-42781</guid>
		<description>&lt;p&gt;I think it is unfortunate that functional programming means what it means today :) When I was a physics graduate student I always thought that functional programming meant programming with functions though I never took the meaning of the word &quot;function&quot; as in mathematics but as in Fortran :)&lt;/p&gt;

&lt;p&gt;I suppose the correct phrase should be &quot;side effect free functional programming&quot;&lt;/p&gt;

&lt;p&gt;Oh well... :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I think it is unfortunate that functional programming means what it means today <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  When I was a physics graduate student I always thought that functional programming meant programming with functions though I never took the meaning of the word &#8220;function&#8221; as in mathematics but as in Fortran <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p>I suppose the correct phrase should be &#8220;side effect free functional programming&#8221;</p>

<p>Oh well&#8230; <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-42069</link>
		<dc:creator>Conal</dc:creator>
		<pubDate>Sat, 20 Mar 2010 23:28:21 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-42069</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;One could say that Haskell IO expressions “denote something” but we don’t quite know what ....&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Though I doubt that &lt;code&gt;IO&lt;/code&gt; does denote anything, given the requirement of compositionality of semantics.  Consider that &lt;code&gt;IO&lt;/code&gt; includes exception-handling, which is sensitive to order-of-evaluation of pure (non-IO) expressions. Exception-handling thus extracts more meaning than exists out of pure sub-expressions, breaking compositionality.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>One could say that Haskell IO expressions “denote something” but we don’t quite know what &#8230;.</p>
</blockquote>

<p>Though I doubt that <code>IO</code> does denote anything, given the requirement of compositionality of semantics.  Consider that <code>IO</code> includes exception-handling, which is sensitive to order-of-evaluation of pure (non-IO) expressions. Exception-handling thus extracts more meaning than exists out of pure sub-expressions, breaking compositionality.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35882</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Tue, 12 Jan 2010 19:52:14 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35882</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;Nobody&#039;s mentioned it, but isn&#039;t this what Landin called &quot;denotative&quot;?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oh -- I&#039;d forgotten about Landin&#039;s use of &quot;denotative&quot;.  Thanks for the reminder.&lt;/p&gt;

&lt;p&gt;From section 8 of &lt;em&gt;&lt;a href=&quot;http://www.scribd.com/doc/12878059/The-Next-700-Programming-Languages&quot; rel=&quot;nofollow&quot;&gt;The Next 700 Programming Languages&lt;/a&gt;&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The commonplace expressions of arithmetic and algebra have a certain simplicity that most communications to computers lack. In particular, (a) each expression has a nesting subexpression structure, (b) each subexpression denotes something (usually a number, truth value or numerical function), (c) the thing an expression denotes, i.e., its &quot;value&quot;, depends only on the values of its subexpressions, not on other properties of them.&lt;/p&gt;
  
  &lt;p&gt;It is these properties, and crucially (c), that explains why such expressions are easier to construct and understand. Thus it is (c) that lies behind the evolutionary trend towards &quot;bigger righthand sides&quot; in place of strings of small, explicitly sequenced assignments and jumps. When faced with a new notation that borrows the functional appearance of everyday algebra, it is (c) that gives us a test for whether the notation is genuinely functional or merely masquerading.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then in section 9:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;An important distinction is the one between indicating what behavior, step-by-step, you want the machine to perform, and merely indicating what outcome you want. Put that way, the distinction will not stand up to close investigation. I suggest that the conditions (a-c) in Section 8 are a necessary part of &quot;merely indicating what outcome you want.&quot; The word &quot;denotative&quot; seems more appropriate than nonprocedural, declarative or functional. The antithesis of denotative is &quot;imperative.&quot; Effectively &quot;denotative&quot; means &quot;can be mapped into ISWIM without using jumping or assignment,&quot; given appropriate primitives.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think Landin does indeed mean what I mean.  I&#039;m uncertain, as his conditions (b) &amp; (c) say that subexpressions &quot;denote something&quot;, but he doesn&#039;t say that the &lt;em&gt;something&lt;/em&gt; must be explicitly defined.  One could say that Haskell IO expressions &quot;denote something&quot; but we don&#039;t quite know what, but then how could we test the claim for validity?  What I mean by &quot;denotational programming&quot; requires well-defined, precise and tractable denotations.  Those denotations then serve as the basis for implementation correctness, documentation, and formal reasoning.&lt;/p&gt;

&lt;p&gt;If I knew that Landin did indeed mean having a precise &amp; tractable denotation, I&#039;d happily adopt his &quot;denotative&quot; in place of my &quot;denotational&quot;.  Hm.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>Nobody&#8217;s mentioned it, but isn&#8217;t this what Landin called &#8220;denotative&#8221;?</p>
</blockquote>

<p>Oh &#8212; I&#8217;d forgotten about Landin&#8217;s use of &#8220;denotative&#8221;.  Thanks for the reminder.</p>

<p>From section 8 of <em><a href="http://www.scribd.com/doc/12878059/The-Next-700-Programming-Languages" rel="nofollow">The Next 700 Programming Languages</a></em>:</p>

<blockquote>
  <p>The commonplace expressions of arithmetic and algebra have a certain simplicity that most communications to computers lack. In particular, (a) each expression has a nesting subexpression structure, (b) each subexpression denotes something (usually a number, truth value or numerical function), (c) the thing an expression denotes, i.e., its &#8220;value&#8221;, depends only on the values of its subexpressions, not on other properties of them.</p>
  
  <p>It is these properties, and crucially (c), that explains why such expressions are easier to construct and understand. Thus it is (c) that lies behind the evolutionary trend towards &#8220;bigger righthand sides&#8221; in place of strings of small, explicitly sequenced assignments and jumps. When faced with a new notation that borrows the functional appearance of everyday algebra, it is (c) that gives us a test for whether the notation is genuinely functional or merely masquerading.</p>
</blockquote>

<p>Then in section 9:</p>

<blockquote>
  <p>An important distinction is the one between indicating what behavior, step-by-step, you want the machine to perform, and merely indicating what outcome you want. Put that way, the distinction will not stand up to close investigation. I suggest that the conditions (a-c) in Section 8 are a necessary part of &#8220;merely indicating what outcome you want.&#8221; The word &#8220;denotative&#8221; seems more appropriate than nonprocedural, declarative or functional. The antithesis of denotative is &#8220;imperative.&#8221; Effectively &#8220;denotative&#8221; means &#8220;can be mapped into ISWIM without using jumping or assignment,&#8221; given appropriate primitives.</p>
</blockquote>

<p>I think Landin does indeed mean what I mean.  I&#8217;m uncertain, as his conditions (b) &amp; (c) say that subexpressions &#8220;denote something&#8221;, but he doesn&#8217;t say that the <em>something</em> must be explicitly defined.  One could say that Haskell IO expressions &#8220;denote something&#8221; but we don&#8217;t quite know what, but then how could we test the claim for validity?  What I mean by &#8220;denotational programming&#8221; requires well-defined, precise and tractable denotations.  Those denotations then serve as the basis for implementation correctness, documentation, and formal reasoning.</p>

<p>If I knew that Landin did indeed mean having a precise &amp; tractable denotation, I&#8217;d happily adopt his &#8220;denotative&#8221; in place of my &#8220;denotational&#8221;.  Hm.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35880</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Tue, 12 Jan 2010 19:25:51 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35880</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;I am not sure I understand what this means:&lt;/p&gt;
  
  &lt;p&gt;&quot;functional programming has simple, precise semantics&quot; or &quot;functional programming has good compositional properties&quot; or &quot;functional programming is good for reasoning about&quot;.&lt;/p&gt;
  
  &lt;p&gt;What would Haskell&#039;s monadic I/O look like if you had what you are thinking about functional?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To the Haskell programmer, it wouldn&#039;t look like anything at all.  In other words, the imperative computation would be hidden away in implementations of denotationally defined abstractions.  Just as is the case now with imperative computations that implement function call and laziness (stack munging and thunk overwriting).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Can you give a few example of what you can&#039;t defined precisely, what kind of compositional properties are missing, and/or an example of monadic IO program that you can&#039;t reason about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The early part of Backus&#039;s &quot;liberated&quot; paper discusses these issues with imperative programming.  Haskell IO programming is a way to generate imperative computations.  Those computations involve system calls, side-effected variables, and loops, just as in Fortran.  And they can contain semantically nondeterministic concurrency.  Very difficult to reason about precisely.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>I am not sure I understand what this means:</p>
  
  <p>&#8220;functional programming has simple, precise semantics&#8221; or &#8220;functional programming has good compositional properties&#8221; or &#8220;functional programming is good for reasoning about&#8221;.</p>
  
  <p>What would Haskell&#8217;s monadic I/O look like if you had what you are thinking about functional?</p>
</blockquote>

<p>To the Haskell programmer, it wouldn&#8217;t look like anything at all.  In other words, the imperative computation would be hidden away in implementations of denotationally defined abstractions.  Just as is the case now with imperative computations that implement function call and laziness (stack munging and thunk overwriting).</p>

<blockquote>
  <p>Can you give a few example of what you can&#8217;t defined precisely, what kind of compositional properties are missing, and/or an example of monadic IO program that you can&#8217;t reason about.</p>
</blockquote>

<p>The early part of Backus&#8217;s &#8220;liberated&#8221; paper discusses these issues with imperative programming.  Haskell IO programming is a way to generate imperative computations.  Those computations involve system calls, side-effected variables, and loops, just as in Fortran.  And they can contain semantically nondeterministic concurrency.  Very difficult to reason about precisely.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Magnus</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35871</link>
		<dc:creator>Magnus</dc:creator>
		<pubDate>Tue, 12 Jan 2010 16:18:46 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35871</guid>
		<description>&lt;p&gt;Nobody&#039;s mentioned it, but isn&#039;t this what Landin called &quot;denotative&quot;?&lt;/p&gt;

&lt;p&gt;BTW, his paper on the next 700 programming languages reads in many ways like a description of Haskell :-)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Nobody&#8217;s mentioned it, but isn&#8217;t this what Landin called &#8220;denotative&#8221;?</p>

<p>BTW, his paper on the next 700 programming languages reads in many ways like a description of Haskell <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: daryoush</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35824</link>
		<dc:creator>daryoush</dc:creator>
		<pubDate>Tue, 12 Jan 2010 01:25:18 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35824</guid>
		<description>&lt;p&gt;I am not sure I understand what this means:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;“functional programming has simple, precise semantics” or “functional programming has good compositional properties” or “functional programming is good for reasoning about”. &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;What would Haskell’s monadic I/O look like if you had what you are thinking about functional?  Can you give a few example of what you can&#039;t defined precisely,  what kind of compositional properties are missing, and/or an example of monadic IO program that you can&#039;t reason about.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;/p&gt;

&lt;p&gt;Daryoush&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I am not sure I understand what this means:</p>

<p><i>“functional programming has simple, precise semantics” or “functional programming has good compositional properties” or “functional programming is good for reasoning about”. </i></p>

<p>What would Haskell’s monadic I/O look like if you had what you are thinking about functional?  Can you give a few example of what you can&#8217;t defined precisely,  what kind of compositional properties are missing, and/or an example of monadic IO program that you can&#8217;t reason about.</p>

<p>Thanks,</p>

<p>Daryoush</p>]]></content:encoded>
	</item>
	<item>
		<title>By: S.J.</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35585</link>
		<dc:creator>S.J.</dc:creator>
		<pubDate>Sat, 09 Jan 2010 05:06:35 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35585</guid>
		<description>&lt;p&gt;My comment&#039;s about using a broader term at the expense of losing specificity implied by functional programming. Surely denotational encompasses functional, but covers many other aspects as well. Perhaps that&#039;s your intent.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>My comment&#8217;s about using a broader term at the expense of losing specificity implied by functional programming. Surely denotational encompasses functional, but covers many other aspects as well. Perhaps that&#8217;s your intent.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35554</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 08 Jan 2010 21:14:00 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35554</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;Aren’t all programming languages denotational and it’s only the degree or expressiveness that differentiates one from the other? Isn’t functional programming a specialized subset of denotational semantics?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I talk about &quot;denotational programming&quot;, I mean an approach to programming, not a language property.  So I&#039;m having trouble relating to the question.  In denotational programming, all types &amp; operations have precise meanings, given in the style of denotational semantics.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>Aren’t all programming languages denotational and it’s only the degree or expressiveness that differentiates one from the other? Isn’t functional programming a specialized subset of denotational semantics?</p>
</blockquote>

<p>When I talk about &#8220;denotational programming&#8221;, I mean an approach to programming, not a language property.  So I&#8217;m having trouble relating to the question.  In denotational programming, all types &amp; operations have precise meanings, given in the style of denotational semantics.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35552</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 08 Jan 2010 21:03:39 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35552</guid>
		<description>&lt;blockquote&gt;
  &lt;p&gt;Do you have the reasons why IO doesn’t meet those criteria written up somewhere?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;See Backus&#039;s Turing Award lecture, &lt;em&gt;&lt;a href=&quot;http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf&quot; rel=&quot;nofollow&quot;&gt;Can Programming Be Liberated from the von Neumann Style?  A functional style and its algebra of programs&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I get the clearest understanding by considering the influence of denotational models on reasoning.  My experience seems to show that when a data type (or a language) has a simple denotational model, that type is correspondingly easy to reason about, and when the denotational model rings true (compellingly captures the essence of what the type represents), then the programming interface will be correspondingly satisfying to work with.&lt;/p&gt;

&lt;p&gt;Now consider the denotational model of Haskell &lt;code&gt;IO&lt;/code&gt;.
Well, you&#039;ll have difficulty doing so, since we don&#039;t have a denotational model.
Consider instead what such a model would be.
Remember that &lt;code&gt;IO&lt;/code&gt; has thousands of primitives (mostly generated by the foreign-function interface) &lt;em&gt;and&lt;/em&gt; nondeterministic concurrency.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Currently we’ve this nice model of pure computations that we can see it’s easily composable, but it doesn’t capture a good deal of what we can do with computers ...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&#039;ve noticed that some folks want programming models to serve the machine, by capturing what the machine can &lt;em&gt;do&lt;/em&gt;.
I&#039;m more interested in machines as lenses for ideas, i.e., the role of the machine for me is to display ideas for me to observe.
I want to express those ideas in a precise &amp; simple way, thus the appeal of denotational design.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;my apologies if these are recurring questions too :)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No problem.  I&#039;m getting a sense of what questions to include in a FAQ.  Thanks.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote>
  <p>Do you have the reasons why IO doesn’t meet those criteria written up somewhere?</p>
</blockquote>

<p>See Backus&#8217;s Turing Award lecture, <em><a href="http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf" rel="nofollow">Can Programming Be Liberated from the von Neumann Style?  A functional style and its algebra of programs</a></em>.</p>

<p>I get the clearest understanding by considering the influence of denotational models on reasoning.  My experience seems to show that when a data type (or a language) has a simple denotational model, that type is correspondingly easy to reason about, and when the denotational model rings true (compellingly captures the essence of what the type represents), then the programming interface will be correspondingly satisfying to work with.</p>

<p>Now consider the denotational model of Haskell <code>IO</code>.
Well, you&#8217;ll have difficulty doing so, since we don&#8217;t have a denotational model.
Consider instead what such a model would be.
Remember that <code>IO</code> has thousands of primitives (mostly generated by the foreign-function interface) <em>and</em> nondeterministic concurrency.</p>

<blockquote>
  <p>Currently we’ve this nice model of pure computations that we can see it’s easily composable, but it doesn’t capture a good deal of what we can do with computers &#8230;</p>
</blockquote>

<p>I&#8217;ve noticed that some folks want programming models to serve the machine, by capturing what the machine can <em>do</em>.
I&#8217;m more interested in machines as lenses for ideas, i.e., the role of the machine for me is to display ideas for me to observe.
I want to express those ideas in a precise &amp; simple way, thus the appeal of denotational design.</p>

<blockquote>
  <p>my apologies if these are recurring questions too <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</blockquote>

<p>No problem.  I&#8217;m getting a sense of what questions to include in a FAQ.  Thanks.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: S.J.</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35544</link>
		<dc:creator>S.J.</dc:creator>
		<pubDate>Fri, 08 Jan 2010 19:07:24 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35544</guid>
		<description>&lt;p&gt;Aren&#039;t all programming languages denotational and it&#039;s only the degree or expressiveness that differentiates one from the other? Isn&#039;t functional programming a specialized subset of denotational semantics?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Aren&#8217;t all programming languages denotational and it&#8217;s only the degree or expressiveness that differentiates one from the other? Isn&#8217;t functional programming a specialized subset of denotational semantics?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Andrea Vezzosi</title>
		<link>http://conal.net/blog/posts/is-haskell-a-purely-functional-language/comment-page-1#comment-35321</link>
		<dc:creator>Andrea Vezzosi</dc:creator>
		<pubDate>Wed, 06 Jan 2010 01:27:57 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=98#comment-35321</guid>
		<description>&lt;p&gt;Do you have the reasons why IO doesn&#039;t meet those criteria written up somewhere?
Currently we&#039;ve this nice model of pure computations that we can see it&#039;s easily composable, but it doesn&#039;t capture a good deal of what we can do with computers, and then we&#039;ve this hard to work with IO which can describe the rest.
Now, one could think that the complexity of IO stems from what it describes, which would mean there&#039;s no room for researching a nicer model.
It&#039;d be nice to see an analysis of IO that shows how the complexity arises from how it is formulated rather than what it describes.&lt;/p&gt;

&lt;p&gt;Though even what we want to describe is ambiguous, do we want to describe interaction with the current OSes? or some other nicer model?
In the latter case, can that model be implemented over current OSes, and will we be able to interoperate with programs written imperatively, or do we need our own separate world?&lt;/p&gt;

&lt;p&gt;Though it seems that if we could answer these questions we&#039;d have concluded the research. 
I guess i&#039;m asking for a more precise formulation of what you&#039;re aiming for.&lt;/p&gt;

&lt;p&gt;my apologies if these are recurring questions too :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Do you have the reasons why IO doesn&#8217;t meet those criteria written up somewhere?
Currently we&#8217;ve this nice model of pure computations that we can see it&#8217;s easily composable, but it doesn&#8217;t capture a good deal of what we can do with computers, and then we&#8217;ve this hard to work with IO which can describe the rest.
Now, one could think that the complexity of IO stems from what it describes, which would mean there&#8217;s no room for researching a nicer model.
It&#8217;d be nice to see an analysis of IO that shows how the complexity arises from how it is formulated rather than what it describes.</p>

<p>Though even what we want to describe is ambiguous, do we want to describe interaction with the current OSes? or some other nicer model?
In the latter case, can that model be implemented over current OSes, and will we be able to interoperate with programs written imperatively, or do we need our own separate world?</p>

<p>Though it seems that if we could answer these questions we&#8217;d have concluded the research. 
I guess i&#8217;m asking for a more precise formulation of what you&#8217;re aiming for.</p>

<p>my apologies if these are recurring questions too <img src='http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
</channel>
</rss>
