I agree with him. The symbol = means "equality", not "definition". This convension is a bad thing the languages have learned from C (or any older one). The = could be a function to test equality of numbers (maybe for speed improvement) or even instead of "is". The name "is" remembers type checking, not comparison (in my opinion, but this is no the real problem, though).
If briefness is the target, we should use := (or $) instead.
Well, key arguments can be replaced with an assoc list given as last parameter when needed. Using rreduce is much better and simpler than (reduce ... :from-end t). Maybe it is time to addapt the idea of keywords and create a new one?