
#14963: ghci -fdefer-type-errors can't run IO action from another module -------------------------------------+------------------------------------- Reporter: elaforge | Owner: (none) Type: bug | Status: new Priority: high | Milestone: 8.4.2 Component: GHCi | Version: 8.4.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: | -------------------------------------+------------------------------------- Comment (by goldfire): There's always room for simplification, of course, but I think the room here is limited. This whole mechanism came into being when `ExpType`s were introduced. `ExpType`s are "holes" -- places to write a type once we infer it; they replaced `SigmaTv` tyvars that were used previously. I forget what aspect of `ExpType`s specifically forced the rewrite of rebindable syntax, but I do remember that this was more-or-less forced. The reason for the complication is that we want to allow for the possibility that `(>>=) :: blah -> (forall x. x -> x) -> wurble`, where the arguments might have a higher-rank type. This, in turn, requires skolemization while type-checking. That problem with the current setup is that the two arguments are checked in the same `thing_inside`, where they should really be in ''different'' contexts. But that would make the whole scheme even more complicated. So I'm a bit stuck really on how you would want to simplify this. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14963#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler