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 <ekirpichov@gmail.com>:
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 <bugfact@gmail.com>:
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