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