Haskell 98 Report possible errors, part one

Simon Peyton-Jones simonpj@microsoft.com
Mon, 23 Jul 2001 06:09:55 -0700


Marcin is right about this.  It is inconsistent as it stands.=20
I propose to delete the sentence "The Preldue module
is always available as a qualified import..." in the first=20
para of 5.6.1.

The situation will then be:
  if you don't import Prelude explicitly, you implicitly get
	import Prelude
  if you do import Prelude explicitly, you get no implicit imports

Nice and simple


| 5.6.1. "an implicit `import qualified Prelude' is part of=20
| every module and names prefixed by `Prelude.' can always be=20
| used to refer to entities in the Prelude". So what happens in=20
| the following?
|     module Test (null) where
|     import Prelude hiding (null)
|     null :: Int
|     null =3D 0
|     module Test2 where
|     import Test as Prelude
|     import Prelude hiding (null)
|     x :: Int
|     x =3D Prelude.null
| ghc allows that, it dosen't seem to implement the qualified=20
| part of the implicit Prelude import. The report is=20
| contradictory: adding `import qualified Prelude' makes=20
| Prelude.null ambiguous, and thus names prefixed by `Prelude.'=20
| can't always be used to refer to entities in the Prelude.