
I got started with Haskell Data Analysis Cookbook. As an experienced programmer, I LOVE the "cookbook" format. E.g., "Keeping and representing data from a CSV file" or "Examining a JSON file with the aeson package". If you need to actually USE the language, this is a great way to get started. Complete programs are shown.
Unfortunately, most books dive into the language _implementation_ instead of teaching its _interface_. (This probably points to a Haskell design weakness: deep learning of the impl. is nec. for success.)
But my REAL wish: Because I'm like many people and have experience with dozens of languages. I want books that leverage that knowledge and experience. E.g., to explain monads, just say it's an interface specification, and give the API. It'll make sense to me.
"Returns True for any Unicode space character, and the control characters \t, \n, \r, \f, \v."
Before you chastise them for not handling something, verify it. I'm not affiliated with the book but you probably deterred people from buying it.
https://github.com/BinRoot/Haskell-Data-Analysis-Cookbook/bl...
After learning the basics of Haskell, having a book chock full of practical examples of things like handling CVS files, JSON, trees, graphs, machine learning, and Haskell's outstanding support for parallel computation--is a really helpful resource. The code is extremely well written; clear, concise, and readable. The author has also put the source code on GitHub for each chapter. [2]
Afterwards, to take your skills to the next level, check out Simon Marlow's Parallel and Concurrent Programming in Haskell [3]. Simon now works at Facebook, where they're using Haskell in production [4] [5].
[1] http://www.amazon.com/Haskell-Analysis-Cookbook-Nishant-Shuk...
[2] https://github.com/BinRoot/Haskell-Data-Analysis-Cookbook
[3] http://www.amazon.com/Parallel-Concurrent-Programming-Haskel...
[4] https://code.facebook.com/posts/302060973291128/open-sourcin...
[5] http://community.haskell.org/~simonmar/papers/haxl-icfp14.pd...
> isWhitespace x = elem x " \t\r\n"
This is the kind of thing that makes me concerned about using this resource for real-world data. In real-world data you're going to get all kinds of crazy things coming in, and if you're assuming nobody will ever have something like a zero width non-breaking space, or a form feed, you're going to have a problem.
It's the kind of thing I see with people starting out when dealing with data, similarly the punctuation detection here: https://github.com/BinRoot/Haskell-Data-Analysis-Cookbook/bl...
If you rely on these things, you will have problems. Text is hard and weird and terribly more complicated than people usually expect.
Does haskell have good libraries for dealing with the more awkward parts? Can I easily remove all characters marked as whitespace in unicode, for example? Detecting and managing mangled encodings?