<?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: Why Not Haskell?</title>
	<atom:link href="http://offthelip.org/?feed=rss2&#038;p=125" rel="self" type="application/rss+xml" />
	<link>http://offthelip.org/?p=125</link>
	<description>Code weavings for the surf addicts</description>
	<lastBuildDate>Thu, 19 Aug 2010 01:12:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dp</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-33982</link>
		<dc:creator>dp</dc:creator>
		<pubDate>Sat, 19 Jun 2010 04:18:09 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-33982</guid>
		<description>here&#039;s something that bothers me about haskell: data constructors appear to be functions but aren&#039;t, in any traditional sense. example:

data NaturalNumber = NaturalNumber Integer

there isn&#039;t anything restricting NaturalNumber to be greater or equal to zero. data constructors are functions you don&#039;t define, which makes sense because if you did define them i&#039;m not really sure where it all would end... but it&#039;s still annoying that you can&#039;t make any kind of assertions on the data that is given to your data constructors.

another thing, why isn&#039;t there function type polymorphism. that is, i can&#039;t define an operator -&gt; because it&#039;s taken, even if the type would be completely different. same goes for map. if you could do those things, making new operators wouldn&#039;t be such a pain because you&#039;d have better options.</description>
		<content:encoded><![CDATA[<p>here&#8217;s something that bothers me about haskell: data constructors appear to be functions but aren&#8217;t, in any traditional sense. example:</p>
<p>data NaturalNumber = NaturalNumber Integer</p>
<p>there isn&#8217;t anything restricting NaturalNumber to be greater or equal to zero. data constructors are functions you don&#8217;t define, which makes sense because if you did define them i&#8217;m not really sure where it all would end&#8230; but it&#8217;s still annoying that you can&#8217;t make any kind of assertions on the data that is given to your data constructors.</p>
<p>another thing, why isn&#8217;t there function type polymorphism. that is, i can&#8217;t define an operator -&gt; because it&#8217;s taken, even if the type would be completely different. same goes for map. if you could do those things, making new operators wouldn&#8217;t be such a pain because you&#8217;d have better options.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: antage</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-22188</link>
		<dc:creator>antage</dc:creator>
		<pubDate>Tue, 12 Jan 2010 05:29:44 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-22188</guid>
		<description>@Curt, -XDisambiguateRecordFields does not solve Muri&#039;s problem.

rectest.hs:

module Main where

data Rec1 = Rec1 { a :: Int, b :: Int }
data Rec2 = Rec2 { a :: Int, c :: Int }

$ ghc -c -XDisambiguateRecordFields rectest.hs

rectest.hs:4:19:
    Multiple declarations of `Main.a&#039;
    Declared at: rectest.hs:3:19
                 rectest.hs:4:19</description>
		<content:encoded><![CDATA[<p>@Curt, -XDisambiguateRecordFields does not solve Muri&#8217;s problem.</p>
<p>rectest.hs:</p>
<p>module Main where</p>
<p>data Rec1 = Rec1 { a :: Int, b :: Int }<br />
data Rec2 = Rec2 { a :: Int, c :: Int }</p>
<p>$ ghc -c -XDisambiguateRecordFields rectest.hs</p>
<p>rectest.hs:4:19:<br />
    Multiple declarations of `Main.a&#8217;<br />
    Declared at: rectest.hs:3:19<br />
                 rectest.hs:4:19</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Sampson</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-13825</link>
		<dc:creator>Curt Sampson</dc:creator>
		<pubDate>Wed, 09 Sep 2009 14:24:05 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-13825</guid>
		<description>No, because GHC is the most common implementation testbed for most of the features going in to Haskell&#039; (pronounced &quot;HASK-ell-PRIME&quot;), the next version of the standard. For most of us using GHC extensions, we simply stop declaring that we&#039;re using them when we start using Haskell&#039;.

cjs@cynic.net</description>
		<content:encoded><![CDATA[<p>No, because GHC is the most common implementation testbed for most of the features going in to Haskell&#8217; (pronounced &#8220;HASK-ell-PRIME&#8221;), the next version of the standard. For most of us using GHC extensions, we simply stop declaring that we&#8217;re using them when we start using Haskell&#8217;.</p>
<p><a href="mailto:cjs@cynic.net">cjs@cynic.net</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-12168</link>
		<dc:creator>Dan</dc:creator>
		<pubDate>Wed, 12 Aug 2009 14:41:39 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-12168</guid>
		<description>@Curt - One thing I do worry about though, is the amount of functionality that&#039;s not actually &quot;language standard&quot; vs. &quot;nice GHC extension.&quot;  In other words - the language standard seems to be &quot;whatever the latest GHC supports.&quot; 

Does this make anybody else nervous?</description>
		<content:encoded><![CDATA[<p>@Curt &#8211; One thing I do worry about though, is the amount of functionality that&#8217;s not actually &#8220;language standard&#8221; vs. &#8220;nice GHC extension.&#8221;  In other words &#8211; the language standard seems to be &#8220;whatever the latest GHC supports.&#8221; </p>
<p>Does this make anybody else nervous?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Sampson</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-8960</link>
		<dc:creator>Curt Sampson</dc:creator>
		<pubDate>Sat, 02 May 2009 06:35:30 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-8960</guid>
		<description>Doh! As it turns out, Muri&#039;s complaint was addressed at least two years ago, anyway, with a language extension that&#039;s available in GHC now and will doubtless be part of the next Haskell standard: record field disambiguation:

http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#disambiguate-fields

cjs@cynic.net</description>
		<content:encoded><![CDATA[<p>Doh! As it turns out, Muri&#8217;s complaint was addressed at least two years ago, anyway, with a language extension that&#8217;s available in GHC now and will doubtless be part of the next Haskell standard: record field disambiguation:</p>
<p><a href="http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#disambiguate-fields" rel="nofollow">http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#disambiguate-fields</a></p>
<p><a href="mailto:cjs@cynic.net">cjs@cynic.net</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ebrahim</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-8104</link>
		<dc:creator>Ebrahim</dc:creator>
		<pubDate>Tue, 07 Apr 2009 22:33:03 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-8104</guid>
		<description>Thanks :)
I&#039;m now totally convinced that I must learn Haskell.</description>
		<content:encoded><![CDATA[<p>Thanks <img src='http://offthelip.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I&#8217;m now totally convinced that I must learn Haskell.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: missy-film</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-7801</link>
		<dc:creator>missy-film</dc:creator>
		<pubDate>Tue, 24 Mar 2009 22:16:03 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-7801</guid>
		<description>Nicely sorted, helped me understand haskell</description>
		<content:encoded><![CDATA[<p>Nicely sorted, helped me understand haskell</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: QCon London 2009 - A huge breath of air before a long apnea in the IT real world &#171; The Nameless One</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-7772</link>
		<dc:creator>QCon London 2009 - A huge breath of air before a long apnea in the IT real world &#171; The Nameless One</dc:creator>
		<pubDate>Sun, 22 Mar 2009 21:22:24 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-7772</guid>
		<description>[...] World Haskell book in my bag (Yeah I know, Erlang is cool and was well covered during QCon but a friend advised me to have a look at Haskell). At the end, I learnt many concepts and ideas that could be [...]</description>
		<content:encoded><![CDATA[<p>[...] World Haskell book in my bag (Yeah I know, Erlang is cool and was well covered during QCon but a friend advised me to have a look at Haskell). At the end, I learnt many concepts and ideas that could be [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-7432</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Fri, 27 Feb 2009 20:20:46 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-7432</guid>
		<description>Only you could compare writing code to a honeymoon!</description>
		<content:encoded><![CDATA[<p>Only you could compare writing code to a honeymoon!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eyal Lotem</title>
		<link>http://offthelip.org/?p=125&#038;cpage=1#comment-7382</link>
		<dc:creator>Eyal Lotem</dc:creator>
		<pubDate>Sun, 22 Feb 2009 21:47:53 +0000</pubDate>
		<guid isPermaLink="false">http://offthelip.org/?p=125#comment-7382</guid>
		<description>Moreover, the strategy Muri is suggesting is very destructive for type inference.

Consider the code:

int f(var blah) {
  return blah.x;
}

How do you infer the type of f (specifically, the type of its argument &quot;blah&quot;)?

The globally unique names record fields have the important advantage of making the type clear for the type inference engine. If I&#039;m not mistaken, this is one of the roadblocks holding C# global type inference from taking place.</description>
		<content:encoded><![CDATA[<p>Moreover, the strategy Muri is suggesting is very destructive for type inference.</p>
<p>Consider the code:</p>
<p>int f(var blah) {<br />
  return blah.x;<br />
}</p>
<p>How do you infer the type of f (specifically, the type of its argument &#8220;blah&#8221;)?</p>
<p>The globally unique names record fields have the important advantage of making the type clear for the type inference engine. If I&#8217;m not mistaken, this is one of the roadblocks holding C# global type inference from taking place.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
