#2176: H98 module Array exports non-H98 instance Functor ((->) a)
------------------------+---------------------------------------------------
Reporter: duncan | Owner:
Type: bug | Status: new
Priority: normal | Component: libraries/haskell98
Version: 6.8.2 | Severity: normal
Keywords: | Testcase:
Architecture: Unknown | Os: Unknown
------------------------+---------------------------------------------------
Here's a subtle problem for which we have global class instances to thank.
Take a look at how many modules in base and the other core libraries re-
export the class instances defined in Control.Monad.Instances. A lot do.
Indeed the Data.Array and thus the H98 Array module does. That's very bad.
It makes it easy to accidentally write non-portable non-H98 code. This bit
us in Cabal. We try to keep Cabal working with ghc, nhc98, hugs etc.
Malcolm discovered that we were relying on the instance Functor ((->) a)
but were not importing it for nhc98 at least. Nothing in Cabal imports
Control.Monad.Instances so I was wondering how we were coming to end up
with it. Turns out we're getting it at least via Data.Array.
Tracking down the source of instances is quite tricky. I wonder if there
is anything we can do to make it easier? I was using ghc --show-iface on
all the imports to try and find it. In this case it was easier because all
I had to look for was Control.Monad.Instances as an orphan module.
We should audit which modules are importing Control.Monad.Instances and
see if they're essential or just convenience. The point of
Control.Monad.Instances being in a separate module was that it'd not be in
scope by default. That's defeated if other standard modules use it. For
example does Control.Applicative really need it? In fact
Control.Applicative is probably the root offender here, it's the one that
causes Data.Array to re-export the unwanted instances.
Do we need a Control.Applicative.Instances perhaps for the Applicative
((->) a) instance?
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2176>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs