[GHC] #12088: Promote data family instance constructors
GHC
ghc-devs at haskell.org
Sat Jun 18 15:37:25 UTC 2016
#12088: Promote data family instance constructors
-------------------------------------+-------------------------------------
Reporter: alexvieth | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.1
checker) |
Resolution: | Keywords: TypeInType
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC rejects | Unknown/Multiple
valid program | Test Case:
Blocked By: | Blocking:
Related Tickets: #11348 | Differential Rev(s): Phab:D2272
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by alexvieth):
> Alex suggests adding a potentially large number of extra edges, and
thene doing standard SCC. But that seems a bit artifical, and I don't
think it's easy to construct precisely the right extra edges.
Yes, there could be a lot of extra edges: at most the number of
`InstDecl`s multiplied by the number of `TyClDecl`s. Computing them also
requires a dfs for every `TyClDecl`. Compiler performance isn't so great
even without this change, so we should be careful.
I'm fairly certain that these are precisely the right extra edges.
- If `a > b` in the original graph, then `a > b` in the augmented graph,
because edges are never removed.
- The SCCs of the original are the same as in the augmented graph: an
edge is added from `a` to `b` only if there's no path from `b` to `a` (on
the graph including the other artificial edges).
> Instances can't be mutually recursive, so singletons are what we need.
Do you mean that if an instance appears in a cyclic group, the program
will definitely be rejected? If this is true, then your approach is
viable, but we need to get the right error message. Perhaps the simplest
way to do that is to continue using the existing mechanism brought about
by `tcTyClGroup` (which my patch does), but this would demand that we give
the `InstDecl`s in their cyclic groups should they arise.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12088#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list