4 comments

[ 3.2 ms ] story [ 17.7 ms ] thread
This looks like a really good start. I like it.

My request is that you include some real case studies. That's something that Peter Seibel did with his book, "Practical Common Lisp," and it was terrific. I bought Seibel's book--even though you could read it online for free--because he took the time to include those examples.

If you want to distinguish your book and encourage sales, show us how to do something that others have not. Build a game using a graphics library. (Real World Haskell just flirted with a GUI) Show us some web scraping or maybe build a stream editor. Make a server for the web. It doesn't have to be Apache, but if it serves web pages, I'll be impressed.

Anyway, I'll be following your progress, but there are already good Intro to Haskell books. If you want to stand out, go the Seibel route and include a final part that has real programs that showcase Haskell as a viable alternative to python/ruby/java/c/c++/etc...

Thanks for the comments and encouragement, it really helps a lot!

What you describe is precisely what we've aimed at the whole time, but there is a reasonable amount of work that the absolute beginner has to get through before one can tackle anything at that level. The work we've done so far is about as real world as a beginner could hope for, we think. Mind you, up to section 8 pretty much has to be toyish programs of a few lines of code so as not to bamboozle the reader, because they know very little up to there. These sections are tiny for that reason - to keep them interested.

We're slowly releasing the sections for free. Just released another one today (Section 8). It won't be until Section 9 that we start to encounter programs that one could see how they might be truly useful if more work was done on them.

Finding all the movies in your movie collection that start with a letter in the first half of the alphabet is pretty toy, for example (in Section 9) :) - that's the next section we'll release for free on the site. However, we can start to see how that could easily become something useful - like maybe a DVD collection manager database kind of thing, with a bit more coding.

Then, when at around Section 17, we know enough Haskell to be able to read small, but real programs: a times-table "game", and a tiny adventure game (it only has 2 rooms). These are trivial non-real programs from a real-world perspective, but they contain a lot of the elements needed for real programs, and are the precursor to reading beginner to intermediate programs.

We think that our book is unique, because we don't see anything like it anywhere else. Here's why:

The frustrations with the Haskell ecosystem up to this point is that learning from nothing is a real chore. LYAH and RWH are the only free to read purportedly-beginner books, but both of them start assuming that Haskell is the second language, and they're both very out of date.

LYAH doesn't use full programs to illustrate topics, so gives no context (which means things don't stick in your mind), while RWH does do this, but manages to put the reader to sleep while they're reading it because it's not written well and poorly edited (not to be mean here... Bryan O'Sullivan has actually said on his blog that they should have edited it more carefully: http://www.serpentine.com/blog/2014/03/18/book-review-parall... - in comparison, this book by Simon Marlow that he's writing a review for where he complains about his own writing, is excellent writing).

However, none of the books or tutorials around seem to take the time or care to explain the absolute basics: things like the fact that Haskell operates in a massively different way than almost every other single programming language there is: a world that is entirely pure. Where in order to do IO, you don't write commands, but rather, you have to use pure functions to compose building blocks (IO values) which are descriptions of execution, for later execution. We bandy about phrases like "purely functional", but don't tackle this head on.

To our mind, this is one of Haskell's greatest strengths, yet it's usually shunted to the mid or back of books because it's difficult to explain, or an advanced topic, or it's been misunderstood in the past, or because authors feel like they need to get readers to Monad before or when they get to IO. We don't agree with this.

By separating out the passive (reading programs) from the active (creating programs), we think learning can be rapid and things can be understood through large amounts of examples. In the 80's, this is how we learned to program, and it works. You take someone else's program and you type it in! You adjust it, and...

Wow! Great response. I have to say, I'm excited about your book. It sounds like a wonderful project.

It's also interesting that you are really paying attention to beginners. That's definitely something that Haskell needs. The first time I tried learning Haskell, I totally couldn't figure out what was going on. I didn't really understand it until after I played around with Erlang and then came back for a second look.

Anyway, this is a cool, educational project. I hope you keep it going and that the sales pan out.

Thanks very much! There is more of it free online now (chapters 8 and 9).

We're really excited by it, too :)

If you'd like to help us go well and help the sales go well, blog about us, or get people you know to, or just generally recommend us. It all helps! Thanks :)