
I mean, there is no way to write a firstCoord function so that it
would work, for example, on '\y -> P 42 y' and yield 42.
Except for this one:
firstCoord proj = case (proj undefined) of P x y -> x
However, this requires proj to be non-strict in its remaining argument.
But this will actually work if you pass "P x" to it for some x,
because it *is* non-strict in the remaining argument.
2009/3/9 Eugene Kirpichov
P x is indistinguishable neither in compile-time nor in run-time from the value \y -> P x y.
And pattern matching and equality on functions is, of course, undecidable.
2009/3/9 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?
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Eugene Kirpichov Web IR developer, market.yandex.ru
-- Eugene Kirpichov Web IR developer, market.yandex.ru