Re: [GHC] #913: instance Ord (StableName a)

#913: instance Ord (StableName a) -------------------------------------+------------------------------------- Reporter: ekarttun | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: 6.10 branch Component: libraries/base | Version: 6.4.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by andrewthad): I agree with your concern that an Ord instance limits future possibilities to modify the implementation. I disagree with the concern about soundness. As you point out, using hashStableName to implement an Ord instance is unsound. We do not use it in the Eq instance, and it would be every bit as unsound in an Ord instance. The path forward to implementing an Ord instance would be to introduce a new primop for comparing StableName#. It would basically be the same thing as eqStableName#. After all, eqStableName# is basically ( in the current implementation) two calls to stableNameToInt# with the guarantee that garbage collection cannot happen between them. And this guarantee that garbage collection doesn’t happen between the two calls is exactly what you make the implementation you discuss above sound. But yes, it does constrain the possible available implementations. I certainly agree with that. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/913#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC