Problems with scoped type variables and existential data constructors

Dylan Thurston
Tue, 21 Aug 2001 15:27:35 -0400

On Tue, Aug 21, 2001 at 09:22:31AM -0700, Simon Peyton-Jones wrote:
> So it's not ambiguous; but my other comment was right.  In your example:
> | > applyId (Exist x) = Exist (Id x)
> the LHS pattern discharges the constraint (Silly a1 t), but the RHS
> introduces the
> constraint (Silly a2 t), and there's no connection between t1 and t2.
> Why should there be?  You could give a type signature
> 	applyId :: Exist a -> Exist a
> and that would force them to be the same

Great, thank you very much!