Exposing patterns as expressions would be useful because it would allow writing functions that take patterns as parameters.

A major challenge with exposing first class patterns is that it impedes the ability for the compiler to exhaustiveness checking in all cases.

See also Pattern Calculus by Barry Jay for a somewhat fully worked version of this