Parsing and rendering templates in Clojure & Haskell

Posted: 2014-10-02

I rewrote somewhat difficult to understand templating code that was originally in Clojure into much simpler Haskell and yielded a large performance benefit for my trouble.

URL Shortener in 43 lines of Haskell

Posted: 2014-08-22

Written in Scotty. The code is not great.

Aeson with types that have lots of 'maybes', v2

Posted: 2014-07-31

The previous edition of this post was cleaned up by a suggestion from another Haskeller. I share it with you here.

Aeson with types that have lots of 'maybes'

Posted: 2014-07-30

Aeson is a real joy to use once you get into the swing of things, but there are some patterns out there that end-users are left to discover for themselves. One of those is how to deal with data that has a lot of instances of the Maybe type.

Meditations on learning Haskell

Posted: 2014-04-29

This is an extraction of a conversation between multiple Haskellers in an IRC channel. I'm not identifying who said what and the ordering will be more topical than temporal. I'll add annotations for context as appropriate. I edited liberally.

Parsing data of varying structure in Haskell with Aeson

Posted: 2014-04-17

Need to parse data with varying structure? Once again we resort to our old friend for handling exclusive possibilities, the sum type.

Nested user-defined types with Aeson

Posted: 2014-04-11

Sometimes one knows only part of the structure to be parsed out of JSON ahead of time, with some of that structure being defined by a user or consumer of the API. The solution to this in general and when using Aeson to make the wrapper type parametric.

Refactoring boilerplate from sum types

Posted: 2014-04-11

A simple demonstration of extracting boilerplate from Aeson code handling a Just and a Nothing case of a Maybe value.

Grokking sum types, value constructors, and type constructors

Posted: 2014-04-05

Recently I had an experience where in the course of helping somebody with a problem, I developed an example that I thought would help people understand sum types, value constructors, and type constructors better.

Mutable closures in Haskell and nested IO

Posted: 2014-03-25

In my last post, I described IO (IO ()) as being a sign you might've made a mistake unless you knew it was what you wanted. There are patterns which involve using a closed-over mutable reference for things like counters. This naturally leads to nested IO actions.