You actually really cannot curry those 1-place functions (
freeze, thaw) etc. within a conventional type theory any way. You'll find CL-Shen will allow you to do it but not with type checking enabled. Only functions whose arity > 1 are open to currying and this excludes
defun,
defmacro (which is not KL anyway)
cond,
let, (
(arity defun) gives
-1) and so on. I think the original motivation is understandable but misplaced in that changing the spec does not eliminate the behaviour that is isolated. I think it is really a function of understanding that currying forces the evaluator to evaluate arguments one at a time in applicative order.
Re low level implementation; partial applications of and if or are statically eliminable in favour of the corresponding lambda forms. Shen does this with CL all the time and gets a good performance.
Mark