
Ah yes! A palpable bug thank you. Fixing.. S | -----Original Message----- | From: Herbert Valerio Riedel [mailto:hvriedel@gmail.com] | Sent: 17 December 2014 10:01 | To: Simon Peyton Jones | Cc: Edward Kmett; Austin Seipp | Subject: Re: type-checker regression in GHC HEAD? | | Hello Simon, | | ...does that repro-case work for you? shall I create a Trac ticket as | well? I consider this one quite critical for this week's GHC 7.10.1 | RC, if it can't compile `lens` :-/ | | Cheers, | hvr | | On 2014-12-16 at 15:03:49 +0100, Herbert Valerio Riedel wrote: | > On 2014-12-16 at 14:33:00 +0100, Simon Peyton Jones wrote: | >> No immediate bells. | >> | >> Is it possible to reproduce it without compiling all lens's zillion | >> dependencies? | > | > it's actually easier to isolate than expected: | > | > {-# LANGUAGE UndecidableInstances #-} | > | > import Control.Applicative | > import Control.Category | > import Prelude hiding ((.),id) | > | > newtype FocusingPlus w k s a = FocusingPlus { unfocusingPlus :: k | > (s, w) a } | > | > instance Functor (k (s, w)) => Functor (FocusingPlus w k s) where | > fmap f (FocusingPlus as) = FocusingPlus (fmap f as) | > | > instance Applicative (k (s, w)) => Applicative (FocusingPlus w k | s) where | > pure = FocusingPlus . pure | > FocusingPlus kf <*> FocusingPlus ka = FocusingPlus (kf <*> ka) | > | > | > works with GHC 7.8, fails with GHC HEAD w/ | > | > repro.hs:13:25: | > Couldn't match type ‘f0’ with ‘k (s, w)’ | > ‘f0’ is untouchable inside the constraints () bound by the | type signature for pure :: a -> FocusingPlus w k s a at repro.hs:13:3- | 6 | > Expected type: a -> k (s, w) a | > Actual type: a -> f0 a | > Relevant bindings include pure :: a -> FocusingPlus w k s a | (bound at repro.hs:13:3) | > In the second argument of ‘(.)’, namely ‘pure’ | > In the expression: FocusingPlus . pure | > Failed, modules loaded: none. | | -- | "Elegance is not optional" -- Richard O'Keefe