Saturday, November 27, 2010

State of the Blog, and Resources for the Student of Haskell

So I've decided to learn Haskell.  This blog exists first and foremost to keep me on track.  I also hope it is of use to other Haskell newbies.

A bit about me: I have 20 years' experience in software development in scientific computing and aerospace, most of it in C/C++ on various Unix platforms.  I also have some real industry experience in Lisp, and that led to my interest in Haskell.

My Experiences So Far
I've been at this several weeks already.  Readers may find they need some Haskell experience to understand this blog.  But Haskell is a deep enough language that I am still clearly in the beginner camp. 

I began with Hudak's The Haskell School of Expression and a download of GHC to play with at lunch time.  This was fine until SOE began to use exercises that required a nonstandard library that Google couldn't seem to find.  I've not had the time to make a concerted search effort for that library, but I'm still reading the text from time to time and still gaining something from it.  The book is well-written.  Though written by an academic, the book is not pitched at an academic audience, and I find that it stays clear of the 'dry and difficult' to read category. I'm presently in Chapter 5 of this book.
Concurrently, I was working my way through Learn You a Haskell For Great Good!  This is written in an informal, easy-to-read manner.  I like it a lot, it approaches the level of the Head First books, and that's great praise coming from me (though I'm sure not all the HF books are of the same high standard).   I've made my way through the first monad chapter.  LYAH's biggest weakness IMO is that is has no full-length exercises, so be sure to assign yourself one at the end of each section.

Speaking of monads, a bit of advice to other newbies:  browsing through reddit or stackoverflow, you might be tempted to follow one of the many "how to understand monads" links.  Don't do that until you've written at least one Haskell program of a couple hundred lines or more.  I wasted a bunch of time reading monad tutorials long before I was ready for them.  My limited understanding of monads is better for having read them, but it would be better yet if I had read them later.

I have written my first real Haskell program: it parses log files and extracts and formats data.  It's the sort of program that might have as easily been written in bash or Perl, but it was a good exercise for me.  

Other Valuable Resources
The haskell-cafe and haskell-beginners mailing lists are actively used, and a great resource.  Most of the haskell-cafe topics are more advanced, but often give you an overview of some of the more advanced or nonstandard languages features.  I find it valuable but others may not find it valuable until they have written several Haskell programs.

The Haskell Reddit and the Stackoverflow Haskell tag are also quite useful.  The Programming Reddit occasionally has topics of interest to a new Haskeller.

No comments:

Post a Comment