The Haskell Rabbit Hole
As a programmer, curiosity is most often a helpful asset that leads to a grander and more unified understanding of computer science. With Ruby, for example, I quickly learned about the usefulness of closures because the array methods like "map" and "select" were so helpful. Closures became a new tool in my toolbox--something I could apply almost everywhere.
Haskell is teaching me things, but not in the same innocent way that Ruby did. It is definitely pushing me to my limits--recently I feel like a wet-behind-the-ears programmer more often than I can remember.
I'm building a little game in Haskell using OpenGL. Innocently, I found out about Functional Reactive Programming and suddenly I'm on a trail learning about a "generalization of Monads called Arrows", as well as combinators and functional composition in "lifted" spaces. I'm not even sure I'm using the right words to describe what I don't understand :) Next, I decided I'd try loading a VRML file that I had created in Wings3D. Haskell doesn't have a VRML (".wrl") parser that I know of... so I started looking up parsers in Haskell. "Hmmm," I wondered, "What's this 'parsec' thing everyone is talking about?" Oh, it's a "monadic parser combinator in Haskell" that other languages have apparently tried to emulate.
All I can say at this point is, "Wow." There is so much out there that I do not understand. I thought I knew a lot about programming through 6 years of university. It turns out I had only scratched the surface. Beware, there's a rabbit hole underneath that grassy knoll!


