
15 May
2009
15 May
'09
4:10 a.m.
Martin Hofmann wrote:
It is pretty clear, that the following is not a valid Haskell pattern:
foo (x:x:xs) = x:xs
My questions is _why_ this is not allowed. IMHO, the semantics should be clear: The pattern is expected to succeed, iff 'x' is each time bound to the same term.
Isn't this allowed, because this would require a strict evaluation of the 'x' variables?
One reason is: What if the list were a list of functions? How would you decide "sameness" of lambda-terms? By investigating their in-memory representations? By trying to prove that they denote the same mathematical function? Ciao, Janis. -- Dr. Janis Voigtlaender http://wwwtcs.inf.tu-dresden.de/~voigt/ mailto:voigt@tcs.inf.tu-dresden.de