
#14155: GHC mentions unlifted types out of the blue (to me anyway) -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * cc: RyanGlScott (added) Comment: Here's a simpler version which removes some cruft: {{{#!hs newtype R a = R ((a -> a) -> a) newtype Swap p f g a = Swap (p g f a) class IxPointed m where ireturn :: a -> m i i a instance IxPointed f => IxPointed (Swap f) where ireturn a = R (ireturn a) }}} {{{ $ /opt/ghc/8.2.1/bin/ghci Bug.hs GHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci [1 of 1] Compiling Main ( Bug.hs, interpreted ) Bug.hs:9:15: error: • Couldn't match expected type ‘Swap f i i a’ with actual type ‘R a’ • In the expression: R (ireturn a) In an equation for ‘ireturn’: ireturn a = R (ireturn a) In the instance declaration for ‘IxPointed (Swap f)’ • Relevant bindings include a :: a (bound at Bug.hs:9:11) ireturn :: a -> Swap f i i a (bound at Bug.hs:9:3) | 9 | ireturn a = R (ireturn a) | ^^^^^^^^^^^^^ Bug.hs:9:18: error: • Couldn't match a lifted type with an unlifted type • In the first argument of ‘R’, namely ‘(ireturn a)’ In the expression: R (ireturn a) In an equation for ‘ireturn’: ireturn a = R (ireturn a) • Relevant bindings include a :: a (bound at Bug.hs:9:11) ireturn :: a -> Swap f i i a (bound at Bug.hs:9:3) | 9 | ireturn a = R (ireturn a) | ^^^^^^^^^ }}} This is a regression form 8.0.2, where the error message didn't mention unlifted types: {{{ $ /opt/ghc/8.0.2/bin/ghci Bug.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci [1 of 1] Compiling Main ( Bug.hs, interpreted ) Bug.hs:9:15: error: • Couldn't match expected type ‘Swap f i i a’ with actual type ‘R a’ • In the expression: R (ireturn a) In an equation for ‘ireturn’: ireturn a = R (ireturn a) In the instance declaration for ‘IxPointed (Swap f)’ • Relevant bindings include a :: a (bound at Bug.hs:9:11) ireturn :: a -> Swap f i i a (bound at Bug.hs:9:3) Bug.hs:9:18: error: • Couldn't match type ‘m0 (a -> a)’ with ‘(->)’ Expected type: (a -> a) -> a Actual type: m0 (a -> a) (a -> a) a • In the first argument of ‘R’, namely ‘(ireturn a)’ In the expression: R (ireturn a) In an equation for ‘ireturn’: ireturn a = R (ireturn a) • Relevant bindings include a :: a (bound at Bug.hs:9:11) ireturn :: a -> Swap f i i a (bound at Bug.hs:9:3) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14155#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler