A Lazy Sequence

All articles about programming







On features of enterprise software.

3 November 2014


Modeling union types using only functions

The lambda calculus is the basis for functional programming. Church's encodings in the untyped lambda calculus show an interesting pattern that parallels union types in languages like Haskell. Here I try to show how these discriminated union types can be implemented using only javascript functions.

11 June 2013

ANN: Color.js 1.0

color.js, my color management library for JavaScript, has hit 1.0.

30 April 2013


If it doesn't quack like a duck, wrap it in a duck. Or don't.

14 April 2013


Templates are functions

An article that looks at templates in web development in the context of pure functions and functional programming.

21 October 2012


CoffeeScript comprehensions are broken

An examination of List Comprehensions in several languages, how Coffeescript's ‘comprehension’ semantics differ from the common case, and limitations that arise.

12 September 2011

A brief overview of the Clojure web stack

Ring is the foundation of web programming in Clojure. It has a broad ecosystem of libraries that fullfil many different roles in the web stack. This article introduces the fundamental concepts of Ring as well as four major libraries, and explains common idioms to help you get started quickly.

1 June 2011

Parsers generating parsers

Following my introduction to fnparse, this article looks at how more common functional programming tools can be leveraged to make parsers that output new parsers.

7 February 2011

Start parsing in Clojure: fnparse

Parser combinators are a powerful way of expressing complex parsers as first class operations in a language with first class functions. This tutorial introduces one such library, fnparse, for Clojure.

7 February 2011


Monads: redux

Thoughts on the appropriateness of monads in Clojure.

14 February 2010

Ghosts in the machine

Following on from looking at state monads in the context of Clojure, this article looks at variations that add different forms of state-m of non-determinism.

11 February 2010

On iteration

How Python's view of iteration lead me to Clojure.

4 February 2010