I think some articles can change the world. What is your best article about programming?
How to Ask Questions the Smart Way
(and you better make this into a community wiki, or it will get closed faster than you can blink :p )
The first one that comes to mind is Edsger Dijkstra's "Goto statement considered harmful".
Some time ago I came across a utility that, given a function's signature, provides its implementation (parametricity). I cannot recall it right now. Please help
Djinn.
I think Djinn is indeed the tool you're looking for (see Alexey Romanov's answer). Like Daniel points out, Djinn isn't related to parametricity, but perhaps you were mistaken with this tool from the University of Bonn?
Reversing Haskell typechecker: converting from undefined to defined
Is there a list of them with examples accessible to a person without extensive category theory knowledge?
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire(PDF) should help as well. The notation will get a bit hairy, but reading it a few times you should be able to knock down that list of yours.
Also, take a look at the recursion schemes (archived) blog post, the blogger plans on presenting each individually soon, so check back to it regularly --I guess.
Edward Kmett recently posted a Field Guide to recursion schemes, perhaps it helps?
Start with learning about catamorphisms; those are the easiest to grasp. You already know one: foldr!
Then go for anamorphisms (unfoldr) and paramorphisms. Only then go for the other Wikipedia articles/papers; by then they will be easier to understand.
Check out Tim Williams' slide on recursion schemes here:
http://www.timphilipwilliams.com/slides.html
They explain all of the *-morphisms with motivating examples of each.
Here's a start: Wikipedia "Recursion schemes" category.
What would be a good place to go to understand arrows? Ideally, I am just looking for some place with a concise definition with motivation from some good examples, something similar to Wadler's exposition on monads.
http://en.wikibooks.org/wiki/Haskell/Understanding_arrows
I found Hughes' original paper ("Generalizing Monads to Arrows") to be fairly accessible. You can read an older draft of it here. It has some differences from the original paper, which are noted on the bibliography page of Ross Patterson's own overview of Arrows.
If you learn better from practice than theory, try using HXT for XML manipulation, or PArrows for general parsing. They both have APIs centered around arrows.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been looking for a decent guide to Haskell for some time, but haven't been able to find one that seems interesting enough to read through and/or makes sense.
I've had prior exposure to Haskell a few years back, but I can't remember much about it. I remember the "Aha!"-feeling was incredible when I finally got it, and it was actually fun to play with, so I'm looking to rediscover the lost art of Haskell.
I'm familiar with Ruby and its functional programming tricks, so I think I'm not completely in the dark. Any links?
This looks like it fits the bill in the style of Why's Poignant Guide to Ruby.
Learn You a Haskell for Great Good!
Some good places to start are:
The Gentle Introduction To Haskell
Problem Solving in Haskell
Happy Learn Haskell Tutorial
Other resources:
Interesting blog entry on a Study plan for Haskell via the Wayback Machine
HaskellWiki
Generic Haskell User Guide (PDF)
If you're like me, and like videos of presentations, than this is a good tutorial:
A Taste of Haskell
Part 1
Part 2
Slides
It's a three-hour tutorial, that uses xmonad as a running example to explain Haskell to experienced (imperative) programmers.
The presentation is given by Simon Peyton-Jones who, besides being one of the top Haskell designers, is also a great speaker.
Once you get past the beginning stages, I would highly recommend reading Real World Haskell.
The Haskell wikibook which includes the text from the great tutorial Yet Another Haskell Tutorial.
(The "Generic Haskell User Guide" paper is a fine paper, but I think it is a particularly bad recommendation for a beginning Haskell programmer, as it is more of an academic paper presenting extensions to Haskell and basically a different language "Generic Haskell" (i.e. Haskell with an old version of Generics) instead of standard Haskell 98. <irony>If you were looking for dense reading about Haskell, start with the Haskell 98 report.</irony>)
Real World Haskell is a really good book.
Yet Another Haskell Tutorial (PDF) worked for me.
Edit: Updike points out that the text of YAHT has been folded into the Haksell Wikibooks. The PDF is still useful if you (like me) prefer to print out and read on paper.
BTW I have also read A Gentle Introduction To Haskell (also available as PDF). I will definitely not recommend this for beginners. It is only gentle compared to the Haskell Report. However it is a good reference when you have a solid understanding of the language.
A rather late response but I thoroughly enjoyed reading from Learn You A Haskell available online as well as a book.
I've been told to look at
Programming in Haskell, from Graham Hutton
In addition to "Real World Haskell", find a copy of "Haskell: The Craft of Functional Programming". Great textbook.
I like Haskell Tutorial for C Programmers. Especially if you are coming from an imperative language background as I do.
I have downloaded 10 slides from this page http://www.cs.nott.ac.uk/~gmh/book.html and going through it for many times. It workz ;)
Strange that nobody suggested Real World Haskell. That's IMHO the best Haskell book you currently can get you can get it for on or offline reading.
One thing that is really unique about Haskell is that there is a mailing list exactly for beginners. Go to Haskell-Beginners.
Reading books is good, but having some humans to ask is always a great resource, too. Together, I think there is absolutely no reason to say "Haskell is hard to learn because there's no material on it."
You might also want to visit #haskell at irc.freenode.net.
There is also a nice lecture series from the RWTH Achen.
here you will find exams and exercises (possibly in German)
and here are the recordings of the solutions
I got all of this info from the Haskell Wiki's Video presentations page.
This is where I started.
haskell.org