On Tue, Feb 07, 2006 at 10:04:35AM +0100, Georg Martius wrote:
> From the users point of view, the implementation in GHC works quite
> well and a lot people use it. It would be a pity if they are not
> included in the new standard.  What is the problem of specifying what
> is implemented.

They work well most of the time, but people keep discovering strange
behaviour around the edges.  For example, the following (example 6 of
Sulzmann et al) sends GHC into a loop:

        class Mul a b c | a b -> c where
                (.*.) :: a -> b -> c

        instance Mul Int Int Int where (.*.) = (*)
        instance Mul Int Float Float where x .*. y = fromIntegral x * y
        instance Mul a b c => Mul a [b] [c] where x .*. v = map (x.*.) v

        f = \ b x y -> if b then x .*. [y] else y

Noone knows how to specify them (short of pointing at GHC, which won't do).
The closest is Sulzmann et al, which makes the problems clearer.

_______________________________________________
Haskell-prime mailing list
[email protected]
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to