The title of the first post isn’t accidental. Although I’ve recently decided to keep a blog with my progress in learning Haskell, I had a few contacts with the Haskell interpreter. For those who have no experience with the language, Prelude is a standard library of functions loaded when the interpreter is started. But it makes for a good first blog post name.

Why learning a new language

This is a question I see asked more and more. Honestly, I do it because I have an innate curiosity about how different programming languages look like, what kind of programming paradigms they support and what they offer, from a programmer point of view, compared to other languages. Almost two years ago, I started watching the MIT videos lectures for Structure and Interpretation of Computer Programs. I have managed to complete the whole series a year ago. Not that it would be a long series, but due to the lack of time. The important thing is that the lecturers used Lisp for teaching the actual concepts, and while I didn’t have the chance to use Lisp in the real world, those videos helped me to better understand a language I frequently work with, namely JavaScript, the world’s most misunderstood programming language. It made me better understand concepts like lambda, recursion, pattern matching and abstraction. From those lectures I found out that what we usually see as ordinary arithmetic operators, are actual functions. Those languages that do not implemented them as such, should reconsider their design.

That’s why I want to learn a new language. I’m eager to unravel any new programming concept that lies deeply hidden in front of my eyes. It makes me a better programmer and it quenches an inexplicable thirst for knowledge that I have.

Why learning Haskell

I chose it for various reasons. Some of them may be childish, some of them not. From the childish category I can enumerate:

  • it has a very appealing name
  • it has an unusual syntax
  • there’s a small (read it select) group of individual knowing Haskell
  • what the heck are monads and why didn’t I know about them?
  • Simon Peyton-Jones is a nice guy (the man behind the Haskell compiler)
  • I’ve heard that The Haskell Cafe (Haskell’s mailing list) has nice folks too

I’m not sure the latter two are that childish, as I, for one, hate places where people are talking down to me.

From the list of more serious reasons for choosing Haskell, I can think of:

  • it has strong support for functional programming, a paradigm I have grown to appreciate
  • the language is born after years of committee discussions (not always a good thing though)
  • what the heck are monads and why didn’t I know about them?
  • it has strong roots in mathematics, not that I’m a fan of this discipline, but it’s nice to see that some of the more complex concepts are actually applicable in the real life

Why this blog

I don’t intend this blog to be a starting point for someone else who wants to learn Haskell. This is just my progress log in learning the language. I’ll try to write as often and as best as I can, just because trying to lay the concepts down will force me to better understand them. Also, the fact that someone else might come here and see what I have to say, obliges me to think twice before saying stupid things. This is the whole purpose of this blog, to better grasp Haskell. Nothing more.

That’s pretty much all I can say for a first post, which is enough I guess. The rest of my posts will probably be course notes from the two sources that I’m using for the moment:

As other sources will be used, I’ll mention them in the respective entries.

Onwards and upwards!