blog/posts/2017-02-15-another-haskell-and-clojure-post.markdown

67 lines
4 KiB
Markdown
Raw Normal View History

---
author: Sanchayan Maity
title: Another Haskell and Clojure Post
tags: haskell, clojure
---
<p style='text-align: justify;'>Been a while since I wrote about anything here
but it's time to be regular about this again. And oh no! Another Haskell and
Clojure post, just like so many others on the web. Well this will be about my
experience.</p>
<p style='text-align: justify;'>I don't remember how I heard about Haskell the
first time, but, since then I have tried at least thrice to pick it up. Two times
I tried with the book Learn You a Haskell for great good and the other time I
tried referring Real World Haskell. Neither of them stuck with me, even though
the LYAH book is recommended quite a lot. This last June I came across Haskell
Programming from First Principles. After reading the reviews online and checking
out a pirated copy, I decided it was definitely worth it. Yes, I had an ebook
version of it, but I still bought it on my birthday after spending 4000+ INR on
it. I gave it as a present to myself and boy was it worth it, worth every penny.
</p>
<p style='text-align: justify;'>Let's digress a bit to talk about Clojure and
we will come back to Haskell in a while. I was also trying to learn Clojure for
a while now. Having read about "code is data and data is code" in the context of
LISP languages, I wanted to try it out. The only dialect worth trying it seemed
to me was Clojure. Now while I do not care about Java and find it too verbose,
it cannot be denied that the JAVA ecosystem gives one access to a lot of things.
And while I might not land a Haskell job in India, I might just land one with
Clojure. So seemed practical as well.</p>
<p style='text-align: justify;'>I was taking CS 425 Database class in the summer
semester and the professor wanted us to do a JDBC assignment with one of RDBMSes.
I thought what better oppurtunity than this to try some Clojure. So I wrote an
application in Clojure which automates running of TPC-H queries for measuring
database performance. I used the JDBC driver for Postgres.</p>
<p style='text-align: justify;'>Coming from C which is a weakly typed language
Clojure's dynamic typing did not go well down with me. While it was fun to
program in Clojure, but, I would make stupid mistakes and then only find them
at run time. This is a problem with all dynamically typed languages. There is
the source to sink problem. The origin point of error would be somewhere else
and the stack trace or exception would originate somewhere else. This is not
at a problem while programming in Haskell. Haskell's strong typing nature can
catch all such errors at compile time. I personally prefer this. Stupid people
like me who cannot keep all of the code in the head at any given time, prefer
to leverage the type system and compiler for not facing such problems.</p>
<p style='text-align: justify;'>Haskell's code is also much more pleasing to my
eyes than Clojure/LISP's parenthesis style since I find the former easy to parse
than the latter. Although LISP style makes sense since it is an abstract tree
representation as well of the code, but, still nah!. Though given a choice to
not work in Embedded/C and with no Haskell shop around, I would like to work in
Clojure.</p>
<p style='text-align: justify;'>So I am trying to learn Haskell at the moment
from the Haskell book and currently at Foldable chapter. Ten more chapters to
go before I can call myself a beginner Haskeller. After that it will be time
to learn some Yesod and go through Simon Marlow's Parallel and Concurrent
Programming in Haskell. Also I have now switched from using Jekyll for my blog
to using Hakyll. The blog as is currently, is in pretty early stage. I have some
things to figure out like taking care of code snippets and highlighting them
properly. But using Hakyll will also allow me to play around with Haskell. I
do not give a crap about Ruby anyway on which Jekyll is based. Also intend
to switch to xmonad from i3, however my xmonad configuration still requires some
work before I can make it work just like i3.</p>