An interesting question[0] was asked by ntoshev[1] in the discussion that ensued when this was submitted a little over five years ago[2]:<p><pre><code> > Can you give an example of something you can
> implement with a Lisp macro, but you can't
> implement with Haskell?
</code></pre>
Much of that discussion is worth reading. The other submissions don't have much discussion.<p>[0] <a href="https://news.ycombinator.com/item?id=516208" rel="nofollow">https://news.ycombinator.com/item?id=516208</a><p>[1] <a href="https://news.ycombinator.com/user?id=ntoshev" rel="nofollow">https://news.ycombinator.com/user?id=ntoshev</a><p>[2] <a href="https://news.ycombinator.com/item?id=516038" rel="nofollow">https://news.ycombinator.com/item?id=516038</a>
It's interesting to read old introductory posts like this, and then look ahead at future blog posts to see how his opinion evolved.<p>He still loves Haskell: <a href="http://newartisans.com/category/haskell/" rel="nofollow">http://newartisans.com/category/haskell/</a>
I use Clojure for almost everything now, but I must say Haskell looks interesting. My issue is that Clojure is <i>thriving</i> right now, and Haskell has been around longer than I've been and the world sees it as some arcane science. Is it really worth investing my time to learn it if it's really not being used that much?
As a long-time Lisper in AI, Haskell does look intriguing, but I'm more worried about what I would lose. In particular, I'm curious about how DSLs fare in Haskell. I can write first-order logic sentences in Lisp, and they look and behave <i>just like any other Lisp code</i>. I can use evolutionary programming to generate new code on the fly, and send it to the compiler. And I can get really down to the metal if I ever need C-level performance.<p>How do these look in Haskell?
Except macros are great for <i>more</i> than just lazy evaluation. For instance, completely altering syntax to make your app make a lot more sense and remove any amount of boilerplate.<p>As far as parallelism, sure Haskell can give that for free. The cost is you have to be pure about everything, which just seems obnoxious to me...especially when you don't necessarily care about parallelism or performance.<p>With lisp, I can use macros to make parallelism just as natural as programming regular lisp. Yes, I have to be explicit about when I'm being parallel and when I'm not. But that doesn't seem like such a big deal to me, and sometimes you want explicit control over your threads.<p>As far as community, I have no doubts the Haskell community is great. But so is the lisp community. There are a lot of bright people who jump at any chance to help out others, and in the past 5 years the CL implementations and community-built libraries have been making leaps and bounds.<p>This isn't to say Haskell isn't a great choice for many, many applications and requirements. But it's not a replacement for lisp, just as lisp isn't a replacement for Haskell. They are two different beasts that are great at different things.
<i>Why Calculating is Better than Scheming. (1987)</i><p><a href="http://cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf" rel="nofollow">http://cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf</a><p>A paper by Phil Wadler about why ML languages are better than Lisp ones for teaching.
The comments of this article include a lengthy and interesting reply by Daniel Weinreb (of MIT Lisp Machine and Symbolics fame):<p><a href="http://newartisans.com/2009/03/hello-haskell-goodbye-lisp/#comment-766" rel="nofollow">http://newartisans.com/2009/03/hello-haskell-goodbye-lisp/#c...</a><p>The author's reply to Weinreb can be found here:<p><a href="http://newartisans.com/2009/03/the-jvm-and-costs-vs-benefits" rel="nofollow">http://newartisans.com/2009/03/the-jvm-and-costs-vs-benefits</a>
I keep hearing over and over about how great Haskell is, and yet nobody can ever show me anything written in it other than yet another compiler.<p>Haskell is never going to go mainstream. Stop pushing it, because it's getting really tedious.