Re: [Haskell-cafe] Non-termination due to context

2010-01-25 Thread Emil Axelsson
] Non-termination due to context | | Hello all! | | Consider the following program: | | {-# LANGUAGE FlexibleInstances, OverlappingInstances, UndecidableInstances #-} | | class B a = A a | | instance A Int | | class Eq a = B a | | instance (A a, Eq a) = B a | | eq :: B a = a - a - Bool

[Haskell-cafe] Non-termination due to context

2010-01-22 Thread Emil Axelsson
Hello all! Consider the following program: {-# LANGUAGE FlexibleInstances, OverlappingInstances, UndecidableInstances #-} class B a = A a instance A Int class Eq a = B a instance (A a, Eq a) = B a eq :: B a = a - a - Bool eq = (==) test = 1 `eq` (2::Int) (This is a condensed version of

Re: [Haskell-cafe] Non-termination due to context

2010-01-22 Thread Ross Paterson
On Fri, Jan 22, 2010 at 12:24:37PM +0100, Emil Axelsson wrote: Consider the following program: {-# LANGUAGE FlexibleInstances, OverlappingInstances, UndecidableInstances #-} class B a = A a instance A Int class Eq a = B a instance (A a, Eq a) = B a [...] Although I don't know all

Re: [Haskell-cafe] Non-termination due to context

2010-01-22 Thread Ivan Lazar Miljenovic
Ross Paterson r...@soi.city.ac.uk writes: I'm afraid you voided the warranty when you used UndecidableInstances. I like this term of phrase. Maybe it should be used in the actual documentation? ;-) -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com

Re: [Haskell-cafe] Non-termination due to context

2010-01-22 Thread Emil Axelsson
Ross Paterson skrev: On Fri, Jan 22, 2010 at 12:24:37PM +0100, Emil Axelsson wrote: Consider the following program: {-# LANGUAGE FlexibleInstances, OverlappingInstances, UndecidableInstances #-} class B a = A a instance A Int class Eq a = B a instance (A a, Eq a) = B a [...] Although I

RE: [Haskell-cafe] Non-termination due to context

2010-01-22 Thread Simon Peyton-Jones
| To: Haskell Cafe | Subject: [Haskell-cafe] Non-termination due to context | | Hello all! | | Consider the following program: | | {-# LANGUAGE FlexibleInstances, OverlappingInstances, UndecidableInstances #-} | | class B a = A a | | instance A Int | | class Eq a = B a | | instance (A a, Eq a) = B

Re: [Haskell-cafe] Non-termination due to context

2010-01-22 Thread Ryan Ingram
Here's the relevant core for this file (GHC 6.10.4, so I'm a bit out of date): Rec { $dB_rh6 :: Undec.B GHC.Types.Int [GlobalId] [] $dB_rh6 = $dB_rh6 end Rec } Undec.test :: GHC.Bool.Bool [GlobalId] [] Undec.test = GHC.Classes.== @ GHC.Types.Int ($dB_rh6 `cast` ((Undec.:Co:TB)