In Haskell, a data constructor can be used partially applied:

data Pair a b = P a b

f = P 1

however, I cannot do "partial pattern matching", e.g

firstCoord (P x) = x

does not work.

I guess a very important reason must exist why this is the case?