Hakyll uses Pandoc to process markdown and code snippets. It’s very easy to integrate Kate to Hakyll for code highlighting. But I choose to switch to Pygments due to its support for many programming languages.

ROS is a set of software libraries and tools that help build robot applications. This semester, my CSE 568 project is all about ROS. As a functional programming enthusiast, I would like to step away from the Python and C++ world ROS lies in.

roshask is a Haskell binding to ROS. It provides the facility to create ROS nodes, communicate with ROS and generate Haskell data types from ROS message definitions. The generation of Haskell datatype is very appealing as it provides type-level guarantee of the format of messages – I just can’t express more about my frustrations with programming ROS in Python and having to diagnose everything in runtime. So far so good, only when it comes to working with TF.

Enlive is a Clojure web templating library that combines vanilla HTML templates with backend logic. It’s a perfect separation of logic and frontend development in that it does not require frontend developers to know anything about the backend platform – only pure knowledge of HTML (maybe JS, CSS) is required.

I’m reading Pearls of Functional Algorithm Design, which is just a wonderful book on algorithms and functional programming. I’m also playing around with Category Theory and I enjoy the feeling of abstraction. I try to apply some of the ideas to some basic algorithm problems, and it seems to work. Here is a very simple example.

I was always afraid of Haskell Monads. But… I like Haskell, which means, Monads are inevitable. Well, so let me have a taste.

Let’s say, the code is:

1
((++) =<<) (const "hello") "world"

What’s that? Let’s get the clue from type.