[GHC] #9813: Error when reifying type constructor
GHC
ghc-devs at haskell.org
Mon Feb 15 13:51:03 UTC 2016
#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):
Replying to [comment:22 owst]:
> Are `f` and `g` mutually recursive? Since you explicitly say `g`
''cannot'' reify `f` - does `f` therefore just depend on `g`?
We declare that they are. That's what's meant by "anything with a splice
depends on anything else". It's true that the splice can't do much reify
`f`, but it can certainly produce code which calls `f`.
>
> What about in:
> {{{
> f = e $(...)
> c = $(...)
> e = c ...
> d = $(...)
> a = ... b ...
> b = ... a ...
> }}}
>
> I think an processing order: `(a b) < (c d) < e < f` could work:
I don't think this would quite work. What if `c` calls `f`? That is, `c =
$(varE (mkName (['a'..] !! 5 : [])))`. We don't know without running the
splice, so we say that anything with a splice depends on anything else in
the region.
>
>
> > 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.
>
> Indeed, I think that would be nice for a consistent story. However, how
do you order top-level declarations in the toposort?
Perhaps I was confusing. Sorry. I changed my mind as I wrote my response
-- in the end, I don't think this would work, because it would assume that
expression splices above the top-level splice could depend on declarations
below the top-level splice, which might break existing code (and with no
workaround).
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9813#comment:23>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list