curiosity, bug, or just dead code?

Claus Reinke claus.reinke at talk21.com
Mon Sep 10 19:02:26 EDT 2007


consider this module, which is accepted by ghci-6.6.1:

    module T where
    import qualified Prelude as T(length)
    import Prelude(length)
    length = 0

there is no way to refer to either length, as both 'length' 
and 'T.length' are ambiguous (ghci complains on uses 
of either name). but is it a bug?

then again, everything is implicitly exported, and there are 
two possible 'T.length'.. (hugs [20051031] complains 
about conflicting exports, on loading T).

now for the good part:

    module Q where
    import T
    main = print T.length

loads fine, and running main returns 0.

    Ok, modules loaded: Q, T.
    *Q> main
    0

so this must be a bug, right? or a matter of interpretation?

not everything is exported implicitly: imported items, whether 
unqualified or qualified and renamed to share the current 
module as qualifier are not exported by default. and changing 

    module T where

to 

    module T(module T) where

leads to conflicting export errors on load in ghci.

currently, i think ghci is right, and hugs is wrong (note that
my hugs is rather old, though), but it wasn't what i expected.

claus




More information about the Hugs-Bugs mailing list