curiosity, bug, or just dead code?

View: New views
2 Messages — Rating Filter:   Alert me  

curiosity, bug, or just dead code?

by Claus Reinke :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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


_______________________________________________
Hugs-Bugs mailing list
Hugs-Bugs@...
http://www.haskell.org/mailman/listinfo/hugs-bugs

Re: curiosity, bug, or just dead code?

by Ross Paterson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Sep 11, 2007 at 12:02:26AM +0100, Claus Reinke wrote:
> 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

All the GHC behaviour described above follows the Haskell 98 Report.
This treatment of omitted export lists is a documented bug in Hugs
(section 5.1.4 of the User's Guide).

On Mon, Sep 10, 2007 at 06:15:20PM -0700, Tim Chevalier wrote:
> This seems like a GHC bug to me. The Haskell 98 report says:
> "It is legal for more than one module in scope to use the same
> qualifier, provided that all names can still be resolved
> unambiguously." (section 5.3.3)

I think "all names" there was intended to mean all references in the
program (cf 5.5.2).  The module exports the locally defined length,
and there is no reference to T.length.
_______________________________________________
Hugs-Bugs mailing list
Hugs-Bugs@...
http://www.haskell.org/mailman/listinfo/hugs-bugs