
#11754: Error in optCoercion -------------------------------------+------------------------------------- Reporter: simonpj | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.3 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- This program fails Lint after a run of the simplifier. {{{ {-# LANGUAGE TypeOperators, UndecidableSuperClasses, KindSignatures, TypeFamilies, FlexibleContexts #-} module T11728a where import Data.Kind import Data.Void newtype K a x = K a newtype I x = I x data (f + g) x = L (f x) | R (g x) data (f × g) x = f x :×: g x class Differentiable (D f) => Differentiable f where type D (f :: Type -> Type) :: Type -> Type instance Differentiable (K a) where type D (K a) = K Void instance Differentiable I where type D I = K () instance (Differentiable f₁, Differentiable f₂) => Differentiable (f₁ + f₂) where type D (f₁ + f₂) = D f₁ + D f₂ instance (Differentiable f₁, Differentiable f₂) => Differentiable (f₁ × f₂) where type D (f₁ × f₂) = (D f₁ × f₂) + (f₁ × D f₂) }}} Originally reported in #11728, but it's a totally different problem. Richard has nailed it already... patch coming from him. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11754 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler