Sigbjorn Finne wrote:
Peter Thiemann thiemann@informatik.uni-freiburg.de writes:
I have a little question about the following two modules. Suppose you want to write your own variant of the prelude that redefines a couple of names but leaves all the rest unchanged. The Haskell report says that the following should work: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ module BUG2A (module BUG2A, module Prelude) where
import Prelude hiding (head)
head = "HEAD" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ module BUG2B where
import qualified Prelude import BUG2A ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unfortunately, this does not behave as (I think) it should:
Reading file "BUG2B.hs":
Parsing..................................................................... ...
ERROR "BUG2B.hs": Entity "head" imported from module "BUG2A" already defined in module "Prelude"
However, this should be legal from my reading of the report.
Hi Peter,
yep, that's right, and it is a known wrinkle in Hugs' implementation of modules. I submitted a source fix which addresses just this a couple of weeks ago,
http://haskell.cs.yale.edu/pipermail/hugs-bugs/2001-March/000184.html
hopefully it will be included in future releases of Hugs98.
hth --sigbjorn
Hi all, The fix will indeed be included in the next Hugs release (thanks Sigbjorn!); in fact it can be tried right away by checking out the latest revision from the cvs repository. See http://cvs.haskell.org/ for further details. Cheers, Johan