
#9813: Error when reifying type constructor -------------------------------------+------------------------------------- Reporter: owst | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Template Haskell | Version: 7.8.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D1899 Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): Recent arguments have not shifted me from my proposal in comment:15. What about {{{ f = g 5 g = $(...) }}} The suggestion to process declarations that do not contain a splice before declarations that do fails here. Instead, we recognize that `f` and `g` are in a mutually recursive group and process them together. `g` cannot reify `f`. Note that comment:15 says that only already-processed declarations (that is, not in the same mutually recursive group) are available. It does strike me (inspired by comment:16) that with all this toposorting going on, we may be able to avoid having top-level splices break the file up into declaration groups. The current behavior seems something like a feeble attempt at a toposort, anyway. I suppose changing this would break {{{ f = $(...) $( ... reify 'f ... ) }}} though. (That code would work now.) So, upon further thought, this particular aspect of the change seems dead in the water. Note that my pessimism here is only about comment:16, not comment:15. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9813#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler