I don't like (let (a b c) ...) any more than I do &aux. I supposeit's because I'm trying to think "functionally", with "let"as much as possible being "compute this valueand give it a name" rather than "declare thisvariable so I can start side-effecting it.
I wish there were an idiomatic way to have a letwhere the variable cannot be set later. I dohave a macro for this in our library, but Idon't use it since it's not part of our generalprogramming style and consistency ofstyle is so important.
I'm not saying there's no place for let followedby side effects. It's just not the way I usuallythink of it.
Also, putting things in the parameter list that aren'tparameters just feels weird.
If I were designing Lisp again, I would also considernot having &rest at all, and instead pass in "maps",i.e. like alists, so that it would be easier to pass onthese arguments to other functions withouthaving to deal with "apply".A lot of the original motivation of &rest was toavoid consing. In the original implementation,the list values of &rest parameters werestack-consed, and you were supposed tobe careful not to retain them beyond thescope of the function, a trap for the unwary,which could have very bad consequences.
And I would get rid of the supplied-p business,which REALLY makes it hard to pass valueson to other functions. Function compositionshould not be hard to do.
But it's way to late to redesign Common Lisp.