
#13537: Adding underscore (m :: _) to pattern variable makes it fail -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler (Type | Version: 8.0.1 checker) | Resolution: invalid | 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: | -------------------------------------+------------------------------------- Comment (by Iceland_jack): Thank you, consider this answered. ---- I was reifying `(forall ty. STy ty -> r) -> r` from [https://github.com/goldfirere/glambda/blob/ex3/src/Language/Glambda/Type.hs#... Richard's Glambda] {{{#!hs refineTy :: Ty -> (forall ty. STy ty -> r) -> r refineTy (ty1 `Arr` ty2) k = refineTy ty1 $ \sty1 -> refineTy ty2 $ \sty2 -> k (sty1 `SArr` sty2) refineTy IntTy k = k SIntTy refineTy BoolTy k = k SBoolTy }}} If this were a regular continuation / codensity monad we could rewrite it to {{{#!hs refineTy = \case Arr a b -> liftA2 SArr (refine a) (refine b) IntTy -> pure SIntTy BoolTy -> pure SBoolTy }}} but it seems to be a functor from a ''functor'' category, so I'm trying to figure out where it fits in the hierarchy. Thanks. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13537#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler