This wouldn't really be Hacker News unless an arrogant Lisp devotee shows up and claims that Lisp does everything better, so I'll now try to be that arrogant Lisp devotee.
Sean Johnson has given a fantastic talk about pattern matching in Clojure:
https://www.youtube.com/watch?v=n7aE6k8o_BU
He offers some interesting comparisons between Clojure and Erlang.
Going even further, I recently discovered Dynamatch:
https://github.com/metasoarous/dynamatch
"Dynamatch addresses these challenges by enforcing a certain structure in our ordering of match clauses such that many of the incidental complexities of order dependence in a dynamically extensible pattern matching system become more manageable."
Sometimes it seems like Erlang or Haskell has the last word in Pattern Matching, but I'm not aware of anything like Dynamatch in those languages.