A little bit of googling gave me the sense that pattern matching in Mathematica is different from the pattern matching present in several functional languages. Please let me know how these Clojure features differ from that:
Clojure has pattern matching for the arguments in a function definition similar to ML or Haskell. It's often used as a more verbose alternative to optional args, but it's more powerful fundamentally.
There is 1 mechanism instead of 4, and it also happens to be the fundamental basis of evaluation.
There is no way to measure "absolute power" of elegance, which is the issue being gotten at here.
Not to say Mathematica has it gotten it perfect either, because it hasn't. But I have yet to see a superior implementation, and have seen a lot of clunky ones in my search.
Clojure has pattern matching for the arguments in a function definition similar to ML or Haskell. It's often used as a more verbose alternative to optional args, but it's more powerful fundamentally.
Clojure has destructuring in binding forms like let, described here: http://clojure.org/special_forms
Clojure has multimethods which let you pick the method to use based on an arbitrary dispatch function.
There's a pattern matching macro that seems to be the beginning of a DSL for predicates: http://www.brool.com/index.php/pattern-matching-in-clojure