reexport warnings

Simon Peyton-Jones simonpj at microsoft.com
Mon Oct 20 09:36:02 EDT 2003


| My application program (called DoCon),
| being ported recently to  ghc-6.0.1,
| needs to provide the user (program) with the following visibility
| scope of items:
|                     all the proper DoCon export
|                  + most of Haskell standard library
|                  + FiniteMap, and maybe some others
| module DExport
|   (module DPrelude, module Categs, ...  -- DoCon  proper export
|    ...
|    module Data.FiniteMap,
|    module Prelude, module List,  module Ratio, module Random
|   )
| 
| Is this a reasonable way to arrange the thing?

Yes, this looks fine to me.

| Now, the  ghc-6.0.1  compiler reports
| 
| Compiling DExport  ...
|   Warning: `++' is exported by `module Prelude' and `module List' ..
| 
| I think that these overlaps are harmless, and the compiler will still
| set the intended definitions for  (++), foldr, etc.,
| without any danger.

Correct.  You can suppress these warnings with
-fno-warn-duplicate-exports

| Aslo proper DoCon export fron  DExport  has many similar overlaps.
| I think that it is often useful to be able to import an item from
| different modules. Is this reasonable?

It's fine.  The warning is only saying that either one of the exports
would do by
itself for (++).  Perhaps there should not be a warning when both export
specifiers are 'module X'.

| Generally, I accept these overlap warnings as useful ones.
| But at the installation, such strange numerous warnings on  DExport
| will frighten the user.
| Therefore, Makefile has, probably, to compile the last module
| DExport with this kind of messages switched off.

Yes, -fno-warn-duplicate-exports should do the job.  You can even put it
in the
file thus:
	{-# OPTIONS -fno-warn-duplicate-exports #-}

Simon



More information about the Glasgow-haskell-users mailing list