
13 Nov
2009
13 Nov
'09
8:20 p.m.
On Fri, Nov 13, 2009 at 3:36 PM, David Menendez
On Fri, Nov 13, 2009 at 3:26 PM, Andy Gimblett
wrote: First a type family where the type Y is functionally dependent on the type X, and we have a function from Y to ().
class X a where type Y a enact :: Y a -> ()
This is ambiguous. Type families are not injective (that is, Y a ~ Y b does not imply a ~ b), so there's no way for the compiler to figure out which instance of X is being used when it encounters enact.
Note: that if you need this injectivity you can use a data family instead.