The why of Y

Did you ever wonder how Y works and how anyone could ever have thought of it? Do you feel like a Lisp weakling when some heavy-duty Scheme hacker kicks sand in your face by admiring Y in public? In this note I'll try to explain to you not only how it works, but how someone could have invented it. I'll use Scheme notation because it is easier to understand when functions passed as arguments are being applied. At the end, I'll show you Common Lisp equivalents of some of the Scheme code.