Back in my 2nd year in college (1990), I took a half year course on functional programming. Back then, having several years of heavy duty Z80 assembly videogames programming, and being recently introduced to high level languages via Pascal and Modula 2, my brain was very fresh and open to new paradigms and ideas. Structured languages like Pascal and C were a great way to remove some of the tedium and bureaucracy of assembly, but functional was mindblowing. I already understood the idea of passing functions around as parameters, since we did a lot of that in our semi-OOP approach to game character behaviour. But when you create your first infinite list, wow, that’s a moment to remember!
So I went on, learned my Caml Light in college, some Lisp which was fascinating but I never found a use for, and even Prolog which was mindblowing in a different way. For practical purposes outside of school, however, I just moved from assembly to C and then C++ as my primary development languages. I still used function parameters and some other patterns in C/C++, but for the most part I’ve been an imperative, OOP kind of guy for two decades.
Over the past few weeks, I have stolen a few hours here and there to toy with the language. It’s been an interesting ride so far, but there’s a lot yet to discover. The main sources of learning and reference are:
- Learn You a Haskell – a very entertaining introductory book
- Real World Haskell – a more in-depth book covering practical use cases
- Haskell Wiki – the official wiki
- Hoogle – a search engine for Haskell stuff
If I can find time, I will write more posts about my learning process with the language.