
Hey Dennis, I've been learning Hakell for a bit more than half year now. Like you, I've had all kind of doubts and I have experienced first-hand the steep learning curve. I too have asked myself whether it's worth the effort for an ordinary (read: not academically inclined and gifted) programmer to learn the language with all its high level abstractions. I have chosen to learn properly, from the ground up, using the "http://haskellbook.com/progress.html" for that, and it is taking me quite some time, because my brain is used to very different way of going about programming. I am not beyond all this, yet.. but recently I have decided to finally go and use the langage on a real project. I picked one of the issues in cabal, marked as "easy", worked out the fix for it and contributed a pull request to cabal on github. And to my surprise, I am not finding it difficult anymore to understand Haskell code, and even produce my own. I can feel that I have crossed some kind of threshold and it is not looking that haunting anymore. So I think there is no question that the language and the underlying abstractions are practical. It's more that it is a good bit unconventional in relation to the mainstream and therefore one has to switch gears before being able to use Haskell. Martin Dennis Raddle:
I've been using Haskell for several years, but only really got into the power of the typeclasses recently. It's marvelous how pretty abstract concepts like Monoid, Monad, Functor, etc. can be used.
1. First it's remarkable how many instances they have on useful data structures. So the concepts become less abstract and more applied.
2. Second it's remarkable how the use of these concepts leads to expressive power and conciseness.
Haskell is therefore a very beautiful language that seems to either be exploiting some mighty amazing coincidences or on the other hand is actually plumbing beautiful truths about the universe.
But what if someone came along and said, "Well, conciseness isn't all that important. Having to type more isn't much of a drawback -- it doesn't really increase the time it takes to write a program once you consider that there is a greater time spent in requirements collection, overall design, debugging, and documentation. The real drawback of concise/expressive Haskell is the difficulty in understanding and using it fluently. Ultimately Haskell is just mathematicians having fun, but not very practical."
Now, I would be sad to see someone argue this point of view, as I find Haskell to be beautiful and fun. But the learning difficulties are very real... 16 years of using imperative languages have hardly prepared my brain at all for concise/expressive Haskell. I only use it for a single hobby project and will probably never get beyond learning the list and Maybe instances of a few typeclasses. (It blows my mind to read the docs and see a dozen instances for certain typeclasses.... yikes! When would I ever be able to learn and use those?)
I would just wonder what you, the reader, would say in response to an argument against the practicality of Haskell for these specific reasons: (1) conciseness isn't that important (2) it requires too much of an advanced mathematician's brain to use well.
I have read it has advantages in parallel computing. What else?
Or maybe you would say -- "It's not practical. So EMBRACE it. Have fun."
Dennis
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners