I really think case-lambda is the biggest wart in R7RS,and needs to be discouraged at every opportunity.
1. it's more verbose for simple cases than other idioms
for optional argument handling (DSSSL, let-optionals, etc.)
2. it's quadratic in code size for optional argument handling
3. it encourages different behavior based on the number ofarguments, which is extremely confusing for anythingother than the most common functions (+, /, etc.)
4. it's insufficient for meaningful variadic matching, such asdispatch closures, which could easily be handled bymore general utilities such as match-lambda
5. it encourages implementors to prematurely optimize,treating it as a core form, complicating their ASTs andassociated utilities and all compiler transformations