On Fri, Nov 13, 2009 at 3:36 PM, David Menendez <d...@zednenem.com> wrote:

> On Fri, Nov 13, 2009 at 3:26 PM, Andy Gimblett <hask...@gimbo.org.uk>
> 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.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to