
#13547: Lint error in arrows program -------------------------------------+------------------------------------- Reporter: cipher1024 | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 (CodeGen) | Resolution: | Keywords: Arrows Operating System: Unknown/Multiple | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: 10158 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): cipher1024, is my understanding of arrows correct in that the arrow notation you use in `step` would desugar down to something like this? {{{#!hs step :: LatexParserA Cell1 r step = arr (\prxy -> prxy) >>> id >>> arr (\(Cell prxy') -> prxy') >>> stepList }}} If so, the Core Lint error is somewhat understandable, as trying to typecheck that code simply won't work: {{{ Bug.hs:25:61: error: • Couldn't match type ‘rule0’ with ‘a’ because type variable ‘a’ would escape its scope This (rigid, skolem) type variable is bound by a pattern with constructor: Cell :: forall a. Proxy a -> Cell1, in a lambda abstraction at Bug.hs:25:46-55 Expected type: Proxy rule0 Actual type: Proxy a • In the expression: prxy' In the first argument of ‘arr’, namely ‘(\ (Cell prxy') -> prxy')’ In the first argument of ‘(>>>)’, namely ‘arr (\ (Cell prxy') -> prxy')’ • Relevant bindings include prxy' :: Proxy a (bound at Bug.hs:25:51) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13547#comment:31 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler