
#10156: Unable to coerce with flipped Coercible context -------------------------------------+------------------------------------- Reporter: ekmett | Owner: Type: feature request | Status: infoneeded Priority: normal | Milestone: Component: Compiler (Type | Version: 7.10.1-rc2 checker) | Keywords: Resolution: | Architecture: Operating System: Unknown/Multiple | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by glguy): The feature request is that coerce' should not be necessary {{{ {-# LANGUAGE ScopedTypeVariables #-} module FeatureRequest where import Data.Coerce data Iso a b = Iso (a -> b) (b -> a) -- coerceIso :: Coercible a b => Iso a b -- desired coerceIso :: (Coercible a b, Coercible b a) => Iso a b -- required coerceIso = Iso coerce coerce coerce' :: forall a b. Coercible a b => b -> a coerce' = coerce (id :: a -> a) coerceIso' :: Coercible a b => Iso a b -- work around coerceIso' = Iso coerce coerce' }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10156#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler