On 30 Dec 2007, at 11:10 AM, Cristian Baboi wrote:

In section 4.3.3., chapter 4: Structured types and the semantics of pattern-matching, by S.Peyton Jones and Philip Wadler, there is this equation:

Eval[[\(s p1 p2 ... pt).E]] (s a1 a2 ...at) = Eval[[\p1 ... \pt.E]] a1 ... at

The text say:
"To apply \(s p1 ... pt).E to an argument A we first evaluate A to find out what sort of object it is." "Finally, if A was built with the same constructor as the patern, then the first rule applies."

What I don't get it :

(s a1 a2 ... at) must be the value of A in the semantic domain. Let call that value a. Then how can one know if a was built with (s a1 a2 ... at) and not with (egg b1 b2) ?

I suspect that s and egg are constructors, in which case their images are (by definition) mutually exclusive.

jcc

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to