I'm definitely comfortable with Haskell, and I learned Scheme through SICP and I've played with clojure enough to know my way around. I've done a little with common lisp, but not enough to claim I know it. Given my experience with related languages, would learning CL be useful for me at all, either academically or practically?
It's an interesting language since it's (obviously) all beautiful and Lispy, and has good support for functional ideas...yet very much encourages a "get it done" approach.
For example, here's something like how a Schemer might implement filter (although this seems long to me...am I missing something?):
But realistically, a CLer would probably just use the loop macro:
(defun filter (predicate list)
(loop for elem in list
if (funcall predicate elem)
collect elem))
So if you're interested in a non-castrated language that very deliberately tries to be practical (if at times inelegant)...it's worth a look. Pick up the book Land of Lisp if you're in a whimsical mood, or Practical Common Lisp if you're not.
It's hardly a language that will give you any new revalations in itself (if you already know the ones you mentioned). On the other hand, CL does have some grreeat books. Peter Norvig's and PG's books in particular are fantastic and will make you a better clojure/scheme programmer.
For example, here's something like how a Schemer might implement filter (although this seems long to me...am I missing something?):
But realistically, a CLer would probably just use the loop macro: So if you're interested in a non-castrated language that very deliberately tries to be practical (if at times inelegant)...it's worth a look. Pick up the book Land of Lisp if you're in a whimsical mood, or Practical Common Lisp if you're not.