[Haskell-cafe] Partial pattern matching

Daniel Fischer daniel.is.fischer at web.de
Mon Mar 9 12:43:24 EDT 2009


Am Montag, 9. März 2009 17:30 schrieb Peter Verswyvelen:
> 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?

For one, the type. If x :: a, then P x :: b -> Pair a b, so we'd have

firstCoord :: (b -> Pair a b) -> a

But you can pattern-match only on constructors of the appropriate type. P is 
not a constructor of (b -> Pair a b) (function types don't have 
constructors), so you can't match on a partially applied constructor.


More information about the Haskell-Cafe mailing list