"Scheme is a simple language", I recite to myself as I begin reading a macro expander implementation that is 3k lines long.