On 3.0.9
> ,optimize ((case-lambda (() 0))) = 0 but > ,optimize ((case-lambda (() 0) ((a) 1))) = ((case-lambda (() 0) ((a) 1))) The problem with this is that when the output of a macro contains case-lambda, recursive application results in geometrical increase of code size. It seems that it should be possible to resolve the application on the spot; at last to reduce the case-lambda to a simple lambda when the arity is available (which now only happens when the case-lambda contains a single clause). Thanks Daniel