
#10698: Forall'd variable ‘$rcobox’ is not bound in RULE lhs -------------------------------------+------------------------------------- Reporter: nomeata | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Revisions: | -------------------------------------+------------------------------------- I tried to add this rule to the code of `Data.Map`: {{{ {-# RULES "mapKeysMonotonic/coerce" mapKeysMonotonic coerce = coerce #-} }}} but it would not go through: {{{#!hs libraries/containers/Data/Map/Base.hs:1800:1: warning: Forall'd variable ‘$rcobox’ is not bound in RULE lhs Orig bndrs: [k2, a, $rcobox] Orig lhs: let { cobox_ab8H :: Coercible k2 k2 [LclId, Str=DmdType] cobox_ab8H = MkCoercible @ * @ k2 @ k2 @~ (<k2>_R :: k2 ~R# k2) } in mapKeysMonotonic @ k2 @ k2 @ a (coerce @ k2 @ k2 cobox_ab8H) optimised lhs: mapKeysMonotonic @ k2 @ k2 @ a (\ (tpl_B2 :: k2) -> case cobox_ab8H of _ [Occ=Dead] { MkCoercible tpl_B3 -> tpl_B2 }) }}} The same syntax works for mapping the second parameter, i.e. {{{ {-# RULES "map/coerce" map coerce = coerce #-} }}} (this still `Data.Map`’s `map`). This blocks https://github.com/haskell/containers/pull/163 I’ll see if I can produce a stand-alone testcase. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10698 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler