
#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 owst): Apologies that it took me so long from saying I'll make the user guide changes to actually making them; thanks for the nudge thomie! Having made the doc changes, I'm still not satisfied about the {{{$(return [])}}} solution and I'd definitely like to try to attempt to make the "reasonable" use case work. To be clear, consider: {{{ data A = A f :: Int -> Int f x = x + 1 data B = B C g1 :: Int -> Int g1 x = 1 + g2 x exprContainingSplice1 = $(...) data C = C g2 :: Int -> Int g2 x = x + 2 exprContainingSplice2 = $(...) }}} Naively, I'd expect the splice in {{{ exprContainingSplice1 }}} to be able to refer to {{{A}}} and {{{f}}}, but ''not'' {{{B}}} or {{{g1}}}, since they are in some sense "not fully defined" at the point the splice is encountered (assuming a top-to-bottom processing, rather than some topological-sorted graph-traversal). I'd also expect the splice in {{{ exprContainingSplice2 }}} to be able to able to refer to all functions and and data types except probably(?) {{{exprContainingSplice1}}} and {{{exprContainingSplice2}}}. Can this be made to work, or is it nonsense? Simon's earlier comment
Moreover, types declarations are (reliably) typechecked before values decls. Worth looking into. intrigues me - I think he suggests that it might be possible for a splice in {{{ exprContainingSplice1 }}} to refer to {{{A}}}, but not {{{f}}}?
If it is likely to be at all possible, does anyone have any pointers of likely starting points/functions I should definitely explore etc. I'd like to get my hands dirty! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9813#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler