Sequential Consequences

There comes a point in a programming career — at least one as peripatetic as mine — at which learning a new programming language barely registers as an obstacle. I’m not talking about mind-meltingly different languages like APL, just your run-of-the-mainstream object/imperative mishmash. Grab a syntax cheat-sheet, skim the standard library docs, and off you go.

Clojure Start Syscalls

Inspired by a recent article comparing the number of system calls at start made by various compilers, I decided to do the same with my Clojure start-time experiments.

Sequences in Flatland

The inimitable Chouser has written an exhaustive analysis of the many ways to flatten a sequence of sequences in Clojure.

Clojure Don’ts: Numbered Parameters

Continuing my series of Clojure do’s and don’ts — which, as always, is a mix of technical recommendations and my personal stylistic preferences — and continuing on the topic of the previous post in this series, here are some more arbitrary rules about anonymous functions.

Threading with Style

No, not multi-threading. I’m talking about Clojure’s threading macros, better known as “the arrows.” The -> (“thread-first”) and ->> (“thread-last”) macros are small but significant innovations in Clojure’s Lisp-like syntax. They support a functional style of programming with return values and make composition intuitive. They answer the two chief complaints about Lisp syntax: too many… Continue reading Threading with Style

Clojure Don’ts: Non-Polymorphism

Polymorphism is a powerful feature. The purpose of polymorphism is to provide a single, consistent interface to a caller. There may be multiple ways to carry out that behavior, but the caller doesn’t need to know that. When you call a polymorphic function, you remain blissfully ignorant of (and therefore decoupled from) which method will… Continue reading Clojure Don’ts: Non-Polymorphism