I'm unique in this thread. I've recently decided that pattern matching as it is traditionally implemented is harmful. While you gain a more convenient syntax for operating on compound data structures to gain this syntax you have to completely throw away data abstraction for non-literals. We need a way to succinctly express these same operations on compound data in such a way that we can overload the literal syntax used to correspond to arbitrary abstract data. This would mean decomposing a some abstract data through its assessors preserving abstraction barriers.