>>7
Scheme is cleaner also practically. It has been designed instead of evolved, which means that the language and standard libraries (SRFI) are consistent and logical instead of just random shit thrown together, for instance in the naming. E.g. SRFI 1 vs CL:
APPEND and
APPEND! vs
APPEND and
NCONC,
FILTER and
FILTER! instead of
REMOVE-IF and
DELETE-IF.
The CL philosophy seems to be "solve a problem halfway, then ignore or work around the consequences". For example, dynamic variables. In SRFI 39, they are lexically scoped objects with dynamic values, which means you can export/import/rename them etc. In CL, they are simply symbols which may give you a nasty suprise in case two unrelated pieces of code happen to use the same name for a dynamic variable.
Then of course there are macros. In CL you get a bunch of symbols and return a bunch of symbols; in Scheme you get a bunch of bindings and return a bunch of bindings. CL is fragile: you must make sure your symbols don't have another meaning where they are expanded, leading to hacks like "don't ever shadow a built-in function", "generate temporary names with GENSYM" and "always refer to my package variables as MY-PACKAGE:VARIABLE".
Finally, the whole image thing. Common Lisp likes to conflate read-time, macro-time, run-time, eval-time and whatever I forgot. Where in Scheme I might define some crazy language with normal Scheme macros, in CL you either have normal and normal or crazy and crazy. With a package manager like ASDF you never know if you have undeclared dependencies between packages that just happened to load in the right order (until it breaks of course). Distributing compiled code means dumping a >60MB image because you never know what's needed.
I could go on and on, but I think my point is clear:
Scheme is more useful because Common Lisp is a giant mess.