<div dir="ltr">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. <div><br></div><div>1. First it's remarkable how many instances they have on useful data structures. So the concepts become less abstract and more applied.</div><div><br></div><div>2. Second it's remarkable how the use of these concepts leads to expressive power and conciseness.</div><div><br></div><div>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. </div><div><br></div><div>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."</div><div><br></div><div>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?)</div><div><br></div><div>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. </div><div><br></div><div>I have read it has advantages in parallel computing. What else?</div><div><br></div><div>Or maybe you would say -- "It's not practical. So EMBRACE it. Have fun."</div><div><br></div><div>Dennis</div><div><br></div></div>