Everyone has experienced the feeling of familiarizing oneself with a technology over a period of a few weeks or months and arriving at the "How did I ever live without this?" moment (hereto forth HDIELWT). I have often pondered that question quite seriously, trying to remember hard how I managed before tool X came along. It has happened to me with many a tool, including Emacs, Common Lisp, Delicious, Reddit, and several Google products, such as Gmail, Reader, Calendar, and Voice.
Some time ago, I started to develop programs using tiny, super general, higher-order functions and I began to borrow a little from functional programming. I noticed interesting things about these new programs. They called for special language features that I had until then heard of but never really needed. I'm referring to language features like support for first-class functions, closures, and lexical binding. The programs I produced were smaller and easier to debug than programs written in a traditional procedural style.