TypeFamilies vs. FunctionalDependencies & type-level recursion

dm-list-haskell-prime at scs.stanford.edu dm-list-haskell-prime at scs.stanford.edu
Wed Jun 15 18:54:25 CEST 2011


At Tue, 14 Jun 2011 19:52:00 -0700 (PDT),
oleg at okmij.org wrote:
> 
> 
> Dan Doel wrote:
> >    class C a b | a -> b where
> >      foo :: a -> b
> >      foo = error "Yo dawg."
> >
> >    instance C a b where
> 
> The instance 'C a b' blatantly violates functional dependency and
> should not have been accepted. The fact that it was is a known bug in
> GHC. The bug keeps getting mentioned on Haskell mailing lists
> about every year. Alas, it is still not fixed. Here is one of the
> earlier messages about it:
> 
>   http://www.haskell.org/pipermail/haskell-cafe/2007-March/023916.html

But Oleg, isn't what you are complaining about *exactly* the lifting
of the coverage condition, which is one of the explicit points of
-XUndecidableInstances?  Are you advocating two separate switches for
lifting Paterson vs. Coverage?

What about the following code--do you think this should be illegal,
too?

	{-# LANGUAGE MultiParamTypeClasses #-}
	{-# LANGUAGE FunctionalDependencies #-}
	{-# LANGUAGE UndecidableInstances #-}

	class C a b c | a -> b where
	instance C (Maybe a) (Maybe b) (Maybe b) where

David



More information about the Haskell-prime mailing list