<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Kommentare zu: I (dont) like Haskell</title>
	<atom:link href="http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/feed/" rel="self" type="application/rss+xml" />
	<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/</link>
	<description>Dieser Blog ist keine seriöse Informationsquelle</description>
	<lastBuildDate>Wed, 02 Dec 2009 12:00:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Von: Frederick Ross</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-499</link>
		<dc:creator>Frederick Ross</dc:creator>
		<pubDate>Tue, 14 Jul 2009 16:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-499</guid>
		<description>It&#039;s almost a shame that monads are known mostly for introducing IO.  Working with monads (and, more generally, arrows) is a mental shift qualitatively similar to (but smaller than) the enlightenment of getting how to program in a lambda calculus based language.

But most of your qualms appear to be that it differs from Common Lisp.  This is absolutely true.  There is less to unlearn than coming from C, but swathes of both languages don&#039;t fit in the other.  I have found that on average Haskell suits me better than Common Lisp, so I use it.  If Common Lisp suits you better, then stick with it, but it&#039;s worth sticking with it long enough to figure out monads, monad transformers, and the same structures for arrows.  They&#039;re a delightful little enlightenment.</description>
		<content:encoded><![CDATA[<p>It&#8217;s almost a shame that monads are known mostly for introducing IO.  Working with monads (and, more generally, arrows) is a mental shift qualitatively similar to (but smaller than) the enlightenment of getting how to program in a lambda calculus based language.</p>
<p>But most of your qualms appear to be that it differs from Common Lisp.  This is absolutely true.  There is less to unlearn than coming from C, but swathes of both languages don&#8217;t fit in the other.  I have found that on average Haskell suits me better than Common Lisp, so I use it.  If Common Lisp suits you better, then stick with it, but it&#8217;s worth sticking with it long enough to figure out monads, monad transformers, and the same structures for arrows.  They&#8217;re a delightful little enlightenment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: dasuxullebt</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-492</link>
		<dc:creator>dasuxullebt</dc:creator>
		<pubDate>Mon, 13 Jul 2009 20:24:05 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-492</guid>
		<description>Thank you for giving your real name, but I meant the comment from &quot;Anonymous&quot; above - in general, I dont publish comments that dont seem to have a proper E-Mail-Address (for legal reasons). I edited your post and removed your real name - I dont want to post my realname anywhere, and so I dont force anybody else to do.

Well, Common Lisp&#039;s Object System is also very powerful, and actually it does similar things that haskell&#039;s type-system does I think. But maybe it is the wrong way to compare Haskell with Common Lisp.</description>
		<content:encoded><![CDATA[<p>Thank you for giving your real name, but I meant the comment from &#8222;Anonymous&#8220; above &#8211; in general, I dont publish comments that dont seem to have a proper E-Mail-Address (for legal reasons). I edited your post and removed your real name &#8211; I dont want to post my realname anywhere, and so I dont force anybody else to do.</p>
<p>Well, Common Lisp&#8217;s Object System is also very powerful, and actually it does similar things that haskell&#8217;s type-system does I think. But maybe it is the wrong way to compare Haskell with Common Lisp.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: ertes</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-491</link>
		<dc:creator>ertes</dc:creator>
		<pubDate>Mon, 13 Jul 2009 19:47:36 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-491</guid>
		<description>Was that anonymous?  Well, my name is ********[edited by dasuxullebt - you dont have to give your realname]******* and &#039;ertes&#039; is my nickname. =)

Yes, the point about monads and Lisp macros is entirely true.  About the syntax, well, Haskell tries to reflect its mathematicity.  You can love it or hate it.  But it was noted in another comment that you can also use free alignment, if you use C-style braces.  I would still recommend you to try it out.  You may like it in the end, because it&#039;s not just some fancy syntax.  It allows you to express things concisely.  After all you use indentation anyway, so parentheses are usually just redundant.  If you want this redundancy, you can use parenthesis in Haskell, too. =)

The point about C vs. Haskell was misunderstood.  It&#039;s not that I found C powerful, but that I was convinced that C does The Right Thing, implements The Right Paradigm and enforces The Right Way Of Thinking.  Today when forced to use imperative languages I prefer C#, D or Python (sorted alphabetically), but none of them would beat Haskell for me.  When forced to use a non-Haskell functional language I would probably use F# or OCaml, because of their advanced type systems, probably rather F#, because it allows one to implement monads, although you don&#039;t get anywhere near Haskell&#039;s monads (this is not related to bad language support, but to the type systems -- Haskell has the most advanced type system I have ever seen).

Greets,
Ertes.</description>
		<content:encoded><![CDATA[<p>Was that anonymous?  Well, my name is ********[edited by dasuxullebt - you dont have to give your realname]******* and &#8216;ertes&#8217; is my nickname. =)</p>
<p>Yes, the point about monads and Lisp macros is entirely true.  About the syntax, well, Haskell tries to reflect its mathematicity.  You can love it or hate it.  But it was noted in another comment that you can also use free alignment, if you use C-style braces.  I would still recommend you to try it out.  You may like it in the end, because it&#8217;s not just some fancy syntax.  It allows you to express things concisely.  After all you use indentation anyway, so parentheses are usually just redundant.  If you want this redundancy, you can use parenthesis in Haskell, too. =)</p>
<p>The point about C vs. Haskell was misunderstood.  It&#8217;s not that I found C powerful, but that I was convinced that C does The Right Thing, implements The Right Paradigm and enforces The Right Way Of Thinking.  Today when forced to use imperative languages I prefer C#, D or Python (sorted alphabetically), but none of them would beat Haskell for me.  When forced to use a non-Haskell functional language I would probably use F# or OCaml, because of their advanced type systems, probably rather F#, because it allows one to implement monads, although you don&#8217;t get anywhere near Haskell&#8217;s monads (this is not related to bad language support, but to the type systems &#8212; Haskell has the most advanced type system I have ever seen).</p>
<p>Greets,<br />
Ertes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: dasuxullebt</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-489</link>
		<dc:creator>dasuxullebt</dc:creator>
		<pubDate>Mon, 13 Jul 2009 14:29:15 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-489</guid>
		<description>In general, I dont like anonymous comments.</description>
		<content:encoded><![CDATA[<p>In general, I dont like anonymous comments.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: dasuxullebt</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-488</link>
		<dc:creator>dasuxullebt</dc:creator>
		<pubDate>Mon, 13 Jul 2009 14:27:50 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-488</guid>
		<description>No offense, but actually, when coming from C I can understand that you like haskell. C does well, when you need to optimize a small algorithm in a portable way, but for anything else, I wouldnt use it.
But I used Common Lisp for some time now, and actually, I have learned to accept new ways of programming - as I said, I respect the way Haskell does, and I didnt do enough things with Haskell to really give a profound statement.
I dont think that I will ever like the syntax, because the simple syntax is one of the reasons why I love lisp. But when looking at Liskell, I seem not to be the only one.
When it comes to monads, it seems to me - meanwhile - like monads are to Haskell about what macros are to Lisp. Even though they differ, at least the arguments for having them, as well as the criticisms against them, seem similar. Seems like Monads are a more &quot;semantical&quot; way, while macros are a &quot;syntactical&quot; approach to extend the language&#039;s facilities.</description>
		<content:encoded><![CDATA[<p>No offense, but actually, when coming from C I can understand that you like haskell. C does well, when you need to optimize a small algorithm in a portable way, but for anything else, I wouldnt use it.<br />
But I used Common Lisp for some time now, and actually, I have learned to accept new ways of programming &#8211; as I said, I respect the way Haskell does, and I didnt do enough things with Haskell to really give a profound statement.<br />
I dont think that I will ever like the syntax, because the simple syntax is one of the reasons why I love lisp. But when looking at Liskell, I seem not to be the only one.<br />
When it comes to monads, it seems to me &#8211; meanwhile &#8211; like monads are to Haskell about what macros are to Lisp. Even though they differ, at least the arguments for having them, as well as the criticisms against them, seem similar. Seems like Monads are a more &#8222;semantical&#8220; way, while macros are a &#8222;syntactical&#8220; approach to extend the language&#8217;s facilities.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: ertes</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-484</link>
		<dc:creator>ertes</dc:creator>
		<pubDate>Mon, 13 Jul 2009 10:22:48 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-484</guid>
		<description>Hello dasuxullebt.  It&#039;s true that Haskell is very different from other programming languages and requires you to put off your usual way of thinking to use it properly.  However, your comments about it show that you haven&#039;t actually understood most of its concepts.

Let&#039;s take laziness:  Haskell has non-strict evaluation semantics, which is not just an optimization, but a different way of executing code from ground up.  It allows you to express algorithms in ways you have never thought of before.  For example, to get a list of primes &#039;primes&#039; you create an infinite list of all natural numbers and filter it by an &#039;isPrime&#039; predicate, which in turn checks primality by trial-dividing by all primes.  Yes, &#039;primes&#039; depends on &#039;isPrime&#039;, which in turn depends on &#039;primes&#039;.  This works without problems in Haskell.  Creating infinite data structures and processing them in seemingly impossible ways is something laziness gives you.  This is not optimization, this is a completely different way of thinking.

Let&#039;s take monads:  What they really allow you to do is:  When you have a certain programming pattern, then you can create a domain-specific language to express it.  State is an example of that.  Another example is nondeterminism.  Some functions could have arbitrarily many results.  Monads not only give you a way of expressing such computations conveniently, but also implement functions at a more general level (i.e. not specific to a particular monad).  The true power of monads, however, becomes visible as soon as you learn to combine them (using monad transformers).  Combining the list monad and a state monad you get nondeterministic state.  Combining the list monad and IO you get nondeterministic effects.  Even the list monad alone is something very beautiful.  It lets you have a variable &#039;x&#039;, which stands for all natural numbers or something like that.

Syntax is not ugly, it&#039;s just different.  As soon as you get used to it you will love it.  This post is from someone, who used to be a fanatic C lover, before he took the time to learn Haskell properly.  Now I would never go back to C.

Greets,
Ertes.</description>
		<content:encoded><![CDATA[<p>Hello dasuxullebt.  It&#8217;s true that Haskell is very different from other programming languages and requires you to put off your usual way of thinking to use it properly.  However, your comments about it show that you haven&#8217;t actually understood most of its concepts.</p>
<p>Let&#8217;s take laziness:  Haskell has non-strict evaluation semantics, which is not just an optimization, but a different way of executing code from ground up.  It allows you to express algorithms in ways you have never thought of before.  For example, to get a list of primes &#8216;primes&#8217; you create an infinite list of all natural numbers and filter it by an &#8216;isPrime&#8217; predicate, which in turn checks primality by trial-dividing by all primes.  Yes, &#8216;primes&#8217; depends on &#8216;isPrime&#8217;, which in turn depends on &#8216;primes&#8217;.  This works without problems in Haskell.  Creating infinite data structures and processing them in seemingly impossible ways is something laziness gives you.  This is not optimization, this is a completely different way of thinking.</p>
<p>Let&#8217;s take monads:  What they really allow you to do is:  When you have a certain programming pattern, then you can create a domain-specific language to express it.  State is an example of that.  Another example is nondeterminism.  Some functions could have arbitrarily many results.  Monads not only give you a way of expressing such computations conveniently, but also implement functions at a more general level (i.e. not specific to a particular monad).  The true power of monads, however, becomes visible as soon as you learn to combine them (using monad transformers).  Combining the list monad and a state monad you get nondeterministic state.  Combining the list monad and IO you get nondeterministic effects.  Even the list monad alone is something very beautiful.  It lets you have a variable &#8216;x&#8217;, which stands for all natural numbers or something like that.</p>
<p>Syntax is not ugly, it&#8217;s just different.  As soon as you get used to it you will love it.  This post is from someone, who used to be a fanatic C lover, before he took the time to learn Haskell properly.  Now I would never go back to C.</p>
<p>Greets,<br />
Ertes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Anonymous</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-479</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Sun, 12 Jul 2009 22:39:21 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-479</guid>
		<description>You will be surprised at just how mighty Haskell&#039;s type system is! :-) Really, myself originally coming from the Perl camp, I doubted that too -- but it is definitely true.

There&#039;s just so much fun in the type system: Type classes, higher order stuff, phantom types, existential types, composable monads using the coproduct etcetcetc</description>
		<content:encoded><![CDATA[<p>You will be surprised at just how mighty Haskell&#8217;s type system is! :-) Really, myself originally coming from the Perl camp, I doubted that too &#8212; but it is definitely true.</p>
<p>There&#8217;s just so much fun in the type system: Type classes, higher order stuff, phantom types, existential types, composable monads using the coproduct etcetcetc</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Matthias Benkard</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-474</link>
		<dc:creator>Matthias Benkard</dc:creator>
		<pubDate>Sun, 12 Jul 2009 13:56:17 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-474</guid>
		<description>Sebastian: I think the problem is quite a bit more subtle than crashing vs. getting compiler errors.  Taking the static type system away from Haskell and adding a dynamic one wouldn&#039;t simply result in a kind of Haskell with fewer static checks.  I imagine it wouldn&#039;t result in any kind of Haskell at all.  The resulting language would presumably be -- or become, over time -- very different from Haskell, if not with regard to looks, then at least with regard to feel.

You may be able to make Java dynamically typed without changing it much, but neither can you make Common Lisp statically typed nor Haskell dynamically typed without redesigning other parts of the language as well, and while I adore Haskell&#039;s esthetics, and like it as a programming tool partly _because_ of the powerful way it handles data types, there is quite some complexity associated with its type system and syntax (the latter of which is, in turn, modeled such that it matches the type system) that often distracts me from the problem I&#039;m trying to solve when writing a programme.  I assume it is these secondary effects that the OP takes issue with, although he doesn&#039;t clearly say so.</description>
		<content:encoded><![CDATA[<p>Sebastian: I think the problem is quite a bit more subtle than crashing vs. getting compiler errors.  Taking the static type system away from Haskell and adding a dynamic one wouldn&#8217;t simply result in a kind of Haskell with fewer static checks.  I imagine it wouldn&#8217;t result in any kind of Haskell at all.  The resulting language would presumably be &#8212; or become, over time &#8212; very different from Haskell, if not with regard to looks, then at least with regard to feel.</p>
<p>You may be able to make Java dynamically typed without changing it much, but neither can you make Common Lisp statically typed nor Haskell dynamically typed without redesigning other parts of the language as well, and while I adore Haskell&#8217;s esthetics, and like it as a programming tool partly _because_ of the powerful way it handles data types, there is quite some complexity associated with its type system and syntax (the latter of which is, in turn, modeled such that it matches the type system) that often distracts me from the problem I&#8217;m trying to solve when writing a programme.  I assume it is these secondary effects that the OP takes issue with, although he doesn&#8217;t clearly say so.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: dasuxullebt</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-471</link>
		<dc:creator>dasuxullebt</dc:creator>
		<pubDate>Sat, 11 Jul 2009 13:33:28 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-471</guid>
		<description>I dont think that a type-system really prevents much crashes. They are simply not &quot;mighty&quot; enough. And actually, I almost never had an issue a type-system would have solved.

Monads for side-effects are - in my oppinion - too complicated. Clojure&#039;s and SML&#039;s approach of explicitly getting and setting global variables is sufficient imo. I mean, thats basically what multicore-architectures will do: Using anything local directly, while accessing anything public through some special call.

But as I said in my post, these are just first impressions of Haskell.</description>
		<content:encoded><![CDATA[<p>I dont think that a type-system really prevents much crashes. They are simply not &#8222;mighty&#8220; enough. And actually, I almost never had an issue a type-system would have solved.</p>
<p>Monads for side-effects are &#8211; in my oppinion &#8211; too complicated. Clojure&#8217;s and SML&#8217;s approach of explicitly getting and setting global variables is sufficient imo. I mean, thats basically what multicore-architectures will do: Using anything local directly, while accessing anything public through some special call.</p>
<p>But as I said in my post, these are just first impressions of Haskell.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: dasuxullebt</title>
		<link>http://uxul.wordpress.com/2009/07/09/i-dont-like-haskell/#comment-470</link>
		<dc:creator>dasuxullebt</dc:creator>
		<pubDate>Sat, 11 Jul 2009 13:27:47 +0000</pubDate>
		<guid isPermaLink="false">http://uxul.wordpress.com/?p=1561#comment-470</guid>
		<description>Hm well. I will have to use Haskell in the future anyway. Maybe I&#039;ll get used to it or even like it. Monads are a concept allowing to do some things easier but actually to extend the language I like Lisp-Style-Macros more, and I think, in most of the cases, they are easier.</description>
		<content:encoded><![CDATA[<p>Hm well. I will have to use Haskell in the future anyway. Maybe I&#8217;ll get used to it or even like it. Monads are a concept allowing to do some things easier but actually to extend the language I like Lisp-Style-Macros more, and I think, in most of the cases, they are easier.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
