
#8778: Typeable TypeNats -------------------------------------------+------------------------------- Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Unknown | Type of failure: Blocked By: | None/Unknown Related Tickets: 4385 | Test Case: | Blocking: -------------------------------------------+------------------------------- It would be useful (the case I have at hand is for some scenarios involving checking of physical dimensions) to be able to combine the Data.Dynamic story with the GHC.TypeLits story. A Typeable instance for every Nat is the sticking point. (I do not know if this is even theoretically possible.) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by BjornBuckwalter): * cc: bjorn.buckwalter@… (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by carter): @dmcclean could you please explain what you mean? Make up some pseudo code please! Are you thinking about type level existentials? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by thoughtpolice): * version: 7.8.1-rc1 => Comment: This isn't going to happen in time for 7.8.1. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by dmcclean): Sorry about that, thoughtpolice, I was thinking the field was for where I saw it. Example (also attached, but here for discussion): {{{ {-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE AutoDeriveTypeable #-} module Test8778 where import GHC.TypeLits import Data.Dynamic data Phantom (n :: Nat) = Phantom desirable = toDyn (Phantom :: Phantom 3) }}} Results in: {{{ No instance for (Typeable 3) arising from a use of `toDyn' In the expression: toDyn (Phantom :: Phantom 3) In an equation for `desirable': desirable = toDyn (Phantom :: Phantom 3) Failed, modules loaded: none. }}} This is unfortunate because it means that you can't use Data.Dynamic with any types that have phantom Nat parameters. Up a couple of levels in the abstraction hierarchy, this makes it difficult to build a user interface that works well with displaying signals and taking input of arbitrary dimensional types (lengths, velocities, currents, and the like). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by thoughtpolice): * version: => 7.8.1-rc1 Comment: Actually I was sort of reclassifying the tickets and that was my mistake to remove the version :) I've changed it back. And thank you for the example! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by dreixel): * cc: iavor.diatchki@… (added) Comment: Iavor has looked into this, so he might have some status update... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by carlhowells): If this is possible, it'd be really great to have. For Symbols, too. Just because sometimes Typeable is helpful, and for the times when it is, it's nice for new fancy types to be instances of it as well. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by crockeea): * cc: ecrockett0@… (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats
--------------------------------------------+------------------------------
Reporter: dmcclean | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: ⊥
Component: Compiler (Type checker) | Version: 7.8.1-rc1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets: 4385
--------------------------------------------+------------------------------
Comment (by Iavor S. Diatchki

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by sjoerd_visscher): Should the performance fix from #9203 be applied here too? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by diatchki): I'd be happy to make whatever changes are needed, but could you summarize what I should do? The #9203 ticket just talks about HashMaps, and there is a link to Phabricator, but I don't have an account for that... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by simonpj): The issue in #9203 is that a `Typeable` instance should look like {{{ instance Typeable ... where typeRep# = \_ -> rep where rep = ...blah... }}} and NOT like {{{ instance Typeable ... where typeRep# p = ...blah... }}} to ensure that the computation of `rep` is shared among all invocations of `typeRep#`. So Sjoerd is quite right, I think. (I'm a bit confused because I thought we only allowed machine-generated instances of `Typeable`.) BTW if you have a Github account you automatically have a Phabricator account. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats
--------------------------------------------+------------------------------
Reporter: dmcclean | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: ⊥
Component: Compiler (Type checker) | Version: 7.8.1-rc1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets: 4385
--------------------------------------------+------------------------------
Comment (by Iavor S. Diatchki

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by diatchki): Aha, thanks for the Phabricator tip! I redid the instances to be of the form `\_ -> blah`. About the `Typeable` instance: in normal modules we only allow machine- generated instances. The module `Data.Typeable.Internal` is an exception though---it allows manual instances to accommodate custom instances for some types. One note about the type-literal instances: they have a much higher chance of collision than a typical kind, as both `Nat` and `Symbol` have infinitely many type-constructors, which need to fit into the fingerprint. I am not sure how much of a realistic problem this is, but it is something to keep in mind. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Changes (by aavogt): * cc: vogt.adam@… (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:15 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by simonpj): Re your "note about type-literal instances": did you add a `Note` with the relevant code. it is 100x times more likely to come to someone's attention there than in this ticket! Thanks Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by diatchki): It occurred to me that we could work around the collision problem as follows: in the current representation I am representing each type-level number as its own type-constructor, leading to the collision problem as we need more type constructors than the 128-bit that we have. An alternative would be to think of the numbers as non-empty lists of digits in some large base (e.g. 8192). In other words, we could generate the representation as if the numbers were defined like this: {{{ data Nat = Nil0 | Nil1 | Nil2 | ... | Nil8191 | Cons1 Nat | Cons2 Nat | ... | Cons8191 Nat }}} Pros: - Potentially avoids the chance of collisions as now we need to represent only ~16000 constructors, rather than infinitely many. - Reasonably sized numbers are represented just as efficiently, and very large numbers are only slightly less efficient. Cons: - A bit slower to compute representation? - Functions like `splitTyConApp` would allow users to observe this encoding, although I am not sure that this matters? In the "Pros" list I say "potentially" because even though the `TypeRep` is a tree of type applications, when we compare for equality we are just comparing the fingerprint, so I am not sure that we've actually gained anything by all this... Thoughts? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by diatchki): I looked some more at the code, and realized that this more complex encoding is not worth the effort: we are always hashing the entire type- representation, so it does not matter how the types are encoded. Also, it looks like we are using a reasonable hashing function (MD5), and collisions for it are very unlikely so we should be OK. So, I guess we can close this ticket, unless there are any more issues? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by simonpj): I agree. But still worth a `Note`! Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:19 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats --------------------------------------------+------------------------------ Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: normal | Milestone: ⊥ Component: Compiler (Type checker) | Version: 7.8.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: 4385 --------------------------------------------+------------------------------ Comment (by dmcclean): Thanks, Iavor! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:20 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: Type: feature | Status: new request | Milestone: ⊥ Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by crockeea): What's the milestone for this patch? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: new request | Milestone: ⊥ Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by simonpj): * owner: => diatchki Comment: crokeea: I think it's done already; see comment:3. The ticket is still open only because Iavor may add a Note to explain the stuff in subsequent comments. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: new request | Milestone: ⊥ Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by crockeea): It doesn't appear to be in 7.8.2. I haven't tried 7.8.3, but I'd rather not upgrade if it's not in there yet. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: new request | Milestone: 7.10.1 Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by simonpj): * milestone: ⊥ => 7.10.1 Comment: I don't think it was ever merged onto the 7.8 branch. It's an API change, which we don't usually merge because patch releases aren't supposed to change the API, only fix bugs. So you'll have to wait for 7.10 I'm afraid. Keeping this open, though, pending Iavor's `Note`. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: new request | Milestone: 7.10.1 Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by diatchki): The `Note` about probability of collisions is in `Data.Typeable.Internal` just above the instances. It looks like we are done with this ticket, so I am going to close it. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:25 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: merge request | Milestone: 7.10.1 Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by diatchki): * status: new => merge -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:26 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: merge request | Milestone: 7.10.1 Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by simonpj): For completeness, the note is `Note [Potential Collisions in `Nat` and `Symbol` instances]`. Thanks Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8778: Typeable TypeNats -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: diatchki Type: feature | Status: closed request | Milestone: 7.10.1 Priority: normal | Version: 7.8.1-rc1 Component: Compiler | Keywords: (Type checker) | Architecture: Unknown/Multiple Resolution: fixed | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: 4385 Type of failure: | None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by thoughtpolice): * status: merge => closed * resolution: => fixed Comment: Closing since this is all done. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8778#comment:28 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC