This week I joined a study session / book Club for Haskell. The Book we are covering is Haskell Programming
I joined rather late so had to do 6 chapters in one week. Now that I am caught up I can do a leisurely 1 chapter a week. Everyone reads and performs the exercises in each Chapter on their own. We have a weekly meetup where we can talk about any difficulties with the exercises, get a head start on the next chapter, or just socialize.
Mostly to just reaffirm my belief that what I have is already the best. I really enjoy Clojure. It is my favorite language to work within. The only aspects I sometimes question are related to testing and correctness. I think the unit/functional/generative testing story is great in Clojure. Test are neccesesities in Clojure in order to generate correct code; is this a universal truth?
I have this fantasy though that maybe, just maybe, if I understood type systems well enough I could write code that does not need test at all. Code that is so bulletproof that the fact that it compiles is all the proof we need to know that it works. I suspect that this is a fantasy. Unfortunately, I don't think I can convince myself of this unless I can actually use a strongly typed language and demonstrate this to myself.
Less than impressed.
I get that they wanted a language that is similar to how mathematical functions are written. This results in some rather complex and ridiculous rules for using operators. Ok. Fine.
I also think the fact that I can choose either where
or let
just makes the code harder to understand as I have to move my eye all over the place to grasp what is going on.
The type system is of course a painful thing to bear with, but is probably also the aspect of Clojure that will pay the most dividends. I find it challenging, at the same time I am excited as I begin to understand how it all works.
We march on! Haskell is one of those things that I have said I would learn for years. Here is an opportunity to do so. Doesen't come up all that often. I don't care if I am not getting any immediate value out of it. This is a bucket list item and I am completing it.