<?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"
	>
<channel>
	<title>Comments on: 37 Reasons to Love Haskell (playing off the Ruby article)</title>
	<atom:link href="http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/feed/" rel="self" type="application/rss+xml" />
	<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/</link>
	<description>software, programming languages, and other ideas</description>
	<pubDate>Wed, 20 Aug 2008 10:54:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: haskell programming</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-1027</link>
		<dc:creator>haskell programming</dc:creator>
		<pubDate>Wed, 30 Jul 2008 01:50:39 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-1027</guid>
		<description>&#62; 24. It (really) has no pointers.

what about Foreign.Ptr then there's Foreign.StablePtr and System.Memory.Weak</description>
		<content:encoded><![CDATA[<p>&gt; 24. It (really) has no pointers.</p>
<p>what about Foreign.Ptr then there&#8217;s Foreign.StablePtr and System.Memory.Weak</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eduardo Costa</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-937</link>
		<dc:creator>Eduardo Costa</dc:creator>
		<pubDate>Sat, 02 Feb 2008 00:17:53 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-937</guid>
		<description>I cannot understand why one uses Haskell, instead of Clean. I would appreciate to hear arguments for using Haskell, when one can use Clean. Since these two languages are very similar, it is quite easy to convert programs from one to another. I have seen huge number crunching programs in Clean (for instance, programs to model lightning, by Lucian Lima and Lucian Martins) performing better and much faster in Clean than in MatLab with a C toolbox. Since Haskell has not efficient implementation of arrays, it is impossible to port such a program to Haskell. Thus, here is my first complain about Haskell: It does not provide efficient array processing.

Clean compiler (thanks to unique types) catch most input/output errors; Haskell will catch the errors only at runtime, and I do not like programs from my company crashing at the client's machine (who does?); for instance, Haskell compiles the program below without a single warning; Clean issues an error message, and fails to compile.

module Main
  where

import IO

main = do fromHandle &#60;- getAndOpenFile "Copy from: " ReadMode
          toHandle   &#60;- getAndOpenFile "Copy to: " WriteMode 
          contents    IOMode -&#62; IO Handle

getAndOpenFile prompt mode =
    do putStr prompt
       name  do putStrLn ("Cannot open "++ name ++ "\n")
                       getAndOpenFile prompt mode)</description>
		<content:encoded><![CDATA[<p>I cannot understand why one uses Haskell, instead of Clean. I would appreciate to hear arguments for using Haskell, when one can use Clean. Since these two languages are very similar, it is quite easy to convert programs from one to another. I have seen huge number crunching programs in Clean (for instance, programs to model lightning, by Lucian Lima and Lucian Martins) performing better and much faster in Clean than in MatLab with a C toolbox. Since Haskell has not efficient implementation of arrays, it is impossible to port such a program to Haskell. Thus, here is my first complain about Haskell: It does not provide efficient array processing.</p>
<p>Clean compiler (thanks to unique types) catch most input/output errors; Haskell will catch the errors only at runtime, and I do not like programs from my company crashing at the client&#8217;s machine (who does?); for instance, Haskell compiles the program below without a single warning; Clean issues an error message, and fails to compile.</p>
<p>module Main<br />
  where</p>
<p>import IO</p>
<p>main = do fromHandle &lt;- getAndOpenFile &#8220;Copy from: &#8221; ReadMode<br />
          toHandle   &lt;- getAndOpenFile &#8220;Copy to: &#8221; WriteMode<br />
          contents    IOMode -&gt; IO Handle</p>
<p>getAndOpenFile prompt mode =<br />
    do putStr prompt<br />
       name  do putStrLn (&#8221;Cannot open &#8220;++ name ++ &#8220;\n&#8221;)<br />
                       getAndOpenFile prompt mode)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pierre</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-739</link>
		<dc:creator>Pierre</dc:creator>
		<pubDate>Mon, 10 Dec 2007 16:20:22 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-739</guid>
		<description>Amazing you manage to say that object oriented is the first reason to love Haskell.

Sounds like everything is object oriented these days. 

What about trying to figure out what it means first ?</description>
		<content:encoded><![CDATA[<p>Amazing you manage to say that object oriented is the first reason to love Haskell.</p>
<p>Sounds like everything is object oriented these days. </p>
<p>What about trying to figure out what it means first ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-619</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Sat, 03 Nov 2007 23:26:04 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-619</guid>
		<description>#27 is false.

It's really not fair to say that "Libraries" are a point in haskell's favor.

Most of the packages on Hackage will not build successfully on a recent GHC system, and there is no QA system for packages outside of GHC boot/base package set (core data structures).

Also, despite several attempts and a work-in-progress (LambdaVM) there is not yet a functioning, easy-to-install bridge to Java/CLI or other langauges (just a DIY FFI to C), so the huge multiverse of Java/Python/Perl libraries are not effectively available to Haskell.

Haskell can't really be said to have real-world library support.</description>
		<content:encoded><![CDATA[<p>#27 is false.</p>
<p>It&#8217;s really not fair to say that &#8220;Libraries&#8221; are a point in haskell&#8217;s favor.</p>
<p>Most of the packages on Hackage will not build successfully on a recent GHC system, and there is no QA system for packages outside of GHC boot/base package set (core data structures).</p>
<p>Also, despite several attempts and a work-in-progress (LambdaVM) there is not yet a functioning, easy-to-install bridge to Java/CLI or other langauges (just a DIY FFI to C), so the huge multiverse of Java/Python/Perl libraries are not effectively available to Haskell.</p>
<p>Haskell can&#8217;t really be said to have real-world library support.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-360</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 24 Aug 2007 22:38:30 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-360</guid>
		<description>About point 28: Linux doesn't have an anti-virus program. Haskell doesn't have a debugger.</description>
		<content:encoded><![CDATA[<p>About point 28: Linux doesn&#8217;t have an anti-virus program. Haskell doesn&#8217;t have a debugger.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: p</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-247</link>
		<dc:creator>p</dc:creator>
		<pubDate>Tue, 07 Aug 2007 14:51:50 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-247</guid>
		<description>Jessta: Haskell's state management is just broken down to a little finer level than traditional imperative variable storage. You can program in that same style by using bind operators, but you also have the option of abstracting the state you keep track of to things like nondeterminism, while being assured that different states will compose sanely.</description>
		<content:encoded><![CDATA[<p>Jessta: Haskell&#8217;s state management is just broken down to a little finer level than traditional imperative variable storage. You can program in that same style by using bind operators, but you also have the option of abstracting the state you keep track of to things like nondeterminism, while being assured that different states will compose sanely.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mm_freak</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-206</link>
		<dc:creator>mm_freak</dc:creator>
		<pubDate>Wed, 01 Aug 2007 00:31:49 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-206</guid>
		<description>I would like to note that Haskell has a very powerful and fast generalized exponentiation operator for integral exponents.  If you define a new Num-instance (e.g. for modular arithmetic or more exotic things like elliptic curve groups), the exponentiation operator will be specialized to it automagically, and works just the way you would expect.</description>
		<content:encoded><![CDATA[<p>I would like to note that Haskell has a very powerful and fast generalized exponentiation operator for integral exponents.  If you define a new Num-instance (e.g. for modular arithmetic or more exotic things like elliptic curve groups), the exponentiation operator will be specialized to it automagically, and works just the way you would expect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jessta</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-201</link>
		<dc:creator>Jessta</dc:creator>
		<pubDate>Tue, 31 Jul 2007 13:14:25 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-201</guid>
		<description>Every time I read an article like this I get the urge to try haskell again. But everytime I try haskell it's quite confusing. 

The whole, 'we don't have state except that we do but we call it something else'

GUIs have state, there is no getting around that.</description>
		<content:encoded><![CDATA[<p>Every time I read an article like this I get the urge to try haskell again. But everytime I try haskell it&#8217;s quite confusing. </p>
<p>The whole, &#8216;we don&#8217;t have state except that we do but we call it something else&#8217;</p>
<p>GUIs have state, there is no getting around that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-193</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Mon, 30 Jul 2007 06:49:12 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-193</guid>
		<description>" ... besides, lists are stupid, anyway."


Said the Lisp fan.

:)

(BTW, you're right about the Lisp part)</description>
		<content:encoded><![CDATA[<p>&#8221; &#8230; besides, lists are stupid, anyway.&#8221;</p>
<p>Said the Lisp fan.</p>
<p>:)</p>
<p>(BTW, you&#8217;re right about the Lisp part)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sorear</title>
		<link>http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-191</link>
		<dc:creator>sorear</dc:creator>
		<pubDate>Mon, 30 Jul 2007 01:26:13 +0000</pubDate>
		<guid isPermaLink="false">http://cdsmith.wordpress.com/2007/07/29/37-reasons-to-love-haskell-playing-off-the-ruby-article/#comment-191</guid>
		<description>3. All implementations of Haskell are recognisably interpreters.  (Some of them, notably HBC and GHC, use dynamic specialization techniques to achieve very good performance, but they're still technically interpreters.)

6. Hugs supports DOS.  Nhc98 supports palm-pilots.  Yhc (with Golubovsky's new backend) supports internet phones.

10. Forget smart, it's pretty much the most advanced in the world!  Memory allocation is as fast as sequential writes; OOM checks are coalesced automatically; generations and parallelism are supported, with incrementality in an unmerged branch.

24. But if you really, truly need them, you can get a safe (type-safe and unable to damage things outside of the current computation) version from Control.Monad.ST.

28. Haskell supports Forth-style interactive experimenting, with the added benefit that purity makes it unnecessary to entire commands in the right order, reset states, or anything like that.  It isn't great, but it's much better than most non-C languages...</description>
		<content:encoded><![CDATA[<p>3. All implementations of Haskell are recognisably interpreters.  (Some of them, notably HBC and GHC, use dynamic specialization techniques to achieve very good performance, but they&#8217;re still technically interpreters.)</p>
<p>6. Hugs supports DOS.  Nhc98 supports palm-pilots.  Yhc (with Golubovsky&#8217;s new backend) supports internet phones.</p>
<p>10. Forget smart, it&#8217;s pretty much the most advanced in the world!  Memory allocation is as fast as sequential writes; OOM checks are coalesced automatically; generations and parallelism are supported, with incrementality in an unmerged branch.</p>
<p>24. But if you really, truly need them, you can get a safe (type-safe and unable to damage things outside of the current computation) version from Control.Monad.ST.</p>
<p>28. Haskell supports Forth-style interactive experimenting, with the added benefit that purity makes it unnecessary to entire commands in the right order, reset states, or anything like that.  It isn&#8217;t great, but it&#8217;s much better than most non-C languages&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
