Tom Schrijvers wrote:

> On Wed, 26 Mar 2008, Ganesh Sittampalam wrote:

>> On Wed, 26 Mar 2008, Ross Paterson wrote:
>>
>>> On Wed, Mar 26, 2008 at 08:52:43PM +0000, Ganesh Sittampalam wrote:
>>>> I'm a bit confused about why the following program doesn't compile 
>>>> (in any of 6.6.1, 6.8.1 and 6.9.20080316). Shouldn't the Ord (a, b) 
>>>> context be reduced?
>>> 
>>> To use bar, you need (Ord a, Ord b).  You're assuming that Ord (a, b) 
>>> implies that, but it's the other way round.

> Logically, the implication holds. There's an equivalence:
>
>       Ord a /\ Ord b <=> Ord (a,b)

Unfortunately, GHC accepts the following:

{-# LANGUAGE FlexibleInstances #-}
module Foo2 where

data Foo = Foo
  deriving Eq

instance Ord (Foo, Foo) where
  (Foo, Foo) < (Foo, Foo) = False

Cheers,

Ganesh

==============================================================================
Please access the attached hyperlink for an important electronic communications 
disclaimer: 

http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to