In this post I will introduce some of the basic concepts of the Lambda Calculus and use them to define basic terms and operators of the boolean logic. Recently, I was challenged to write a Clojure’s macro called IF which behaves like the clojure.core/if but doesn’t use anything that expands to it. This means that you can exclude pretty much all the usual suspects in the core: cond, condp, and, or, case, cond->, etc. After feeling a bit lost for about a minute or so, I understood that to s...