"When we write lisp, we have magic powers, and the reason is that our code is in a form that is easy to manipulate programmatically."<p>Yet there isn't a single macro or piece of code writing code implemented in this example. Also, it isn't magic, it is list construction. For the last time LISP IS NOT MAGIC.<p>"This is clearly seriously annoying, and like monads in Haskell, it's the first thing you hit when you learn lisp, but I promise that after a month or so of using it you stop noticing it, and although it's never quite as good for actual arithmetic, it's actually much nicer as a notation for a generalized function call."<p>No, it is seriously clearer than having implicit rules for order of operations that you have to memorize. Not annoying, and much better for arithmetic.<p>Also, there are a boatload of built in functions in clojure-contrib related to math. USE THEM. There is no need to waste time reimplementing absolute value when it is in clojure-contrib already.