Common Lisp is great because it realizes that abstraction and expressiveness are what make fp powerful, and is smart enough to know when to drop 'purity' in favor of these.
After spending a lot of time with Haskell and Scheme, Common Lisp feels very non-functional, however I still feel it is the best language for expressiveness and abstraction. Work with Scheme and Haskell enough and you'll find yourself writing some convoluted things to maintain purity. The problem with purity is that while it makes somethings much easier to express, there are times when you have to stop and ask "how do I express this", I find common lisp always gives you some way to express anything, but leaves you asking "how can I express this better?"