
#9732: Pattern synonyms and unboxed values -------------------------------------+------------------------------------- Reporter: monoidal | Owner: cactus Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: Compile- | Blocked By: time crash | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by cactus): Never mind, I've figured out that last bit -- it's because in this case, `$mPAT` is used at type `Int# -> Int# -> Int# -> Int#`, so it's always going to be strict in both the `cont` and the `fail` arguments. I'll change the code generator for matchers so that both `cont` and `fail` takes an extra `()` argument. Another problem, then, will be making the matcher polymorphic enough that its `r` type argument can be either `*` or `#`... So all in all, in this example, currently: {{{ $mPAT :: forall (r :: *). Int# -> r -> r -> r }}} but it should be {{{ $mPAT :: forall (r :: ?). Int# -> (() -> r) -> (() -> r) -> r }}} Does that sound reasonable? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9732#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler