
Hi, I am not sure if this is a known problem, but here's an example There is a module which imports Ix (from haskell98) and has some datatype deriving (Ix) This module does not compile with the following message: ================= Compiling Geometry ( ../../../home/dima/ext/workdirs/Fudgets/hsrc/utils/Geometry.hs ) yhc: -- during when renaming Error: Identifier Data.Ix._tupleRange used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.inRange used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.range used at 7:35-7:36 is not defined. Error: Type class Data.Ix.Ix used at 7:35-7:36 is not defined. Error: Identifier Data.Ix._tupleIndex used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.index used at 7:35-7:36 is not defined. ================= line 7 is where deriving (...., Ix ) is located. If I import Data.Ix instead, everything compiles fine. The Ix module from haskell98 is: ================= module Ix ( Ix(range, index, inRange, rangeSize) ) where import Data.Ix ================= So, methods of the Ix class are not re-exported. I am pretty much OK importing Data.Ix (anyway, Fudgets code needs to be hierarchized, and I did something in this direction in the past), but this may be a problem in Yhc. Thanks. -- Dimitry Golubovsky Anywhere on the Web

Hi Dimitry,
I think I have figured out what is going on :)
The deriving clause is expanded in place to give an instance. This
instance refers to things in terms of Data.Ix directly, with a fully
qualified module name. Unfortunately import Ix does not make Data.Ix
available as a fully qualified name. I think the solution would be to
do:
module Ix(module Data.Ix) where
import Data.Ix
That may work, but I'm not 100% sure.
I guess the real solution would be on seeing deriving Ix to add import
Data.Ix as Yhc.Internal.Data.Ix at the top of the module, then refer
to Yhc.Internal.Data.Ix everywhere in the instance. That is too hard
to implement in Yhc as it stands, sadly - the renaming stage is black
voodoo magic. Both me and Tom have tried to tweak it, and we both
failed miserably.
As it happens, GHC has a similar issue with this - you can't do
deriving Data without import Data.Generics.
Thanks
Neil
On 1/12/07, Dimitry Golubovsky
Hi,
I am not sure if this is a known problem, but here's an example
There is a module which imports Ix (from haskell98) and has some datatype deriving (Ix)
This module does not compile with the following message:
================= Compiling Geometry ( ../../../home/dima/ext/workdirs/Fudgets/hsrc/utils/Geometry.hs ) yhc: -- during when renaming Error: Identifier Data.Ix._tupleRange used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.inRange used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.range used at 7:35-7:36 is not defined. Error: Type class Data.Ix.Ix used at 7:35-7:36 is not defined. Error: Identifier Data.Ix._tupleIndex used at 7:35-7:36 is not defined. Error: Identifier Data.Ix.index used at 7:35-7:36 is not defined. =================
line 7 is where deriving (...., Ix ) is located.
If I import Data.Ix instead, everything compiles fine.
The Ix module from haskell98 is:
================= module Ix ( Ix(range, index, inRange, rangeSize) ) where
import Data.Ix =================
So, methods of the Ix class are not re-exported.
I am pretty much OK importing Data.Ix (anyway, Fudgets code needs to be hierarchized, and I did something in this direction in the past), but this may be a problem in Yhc.
Thanks.
-- Dimitry Golubovsky
Anywhere on the Web _______________________________________________ Yhc mailing list Yhc@haskell.org http://www.haskell.org/mailman/listinfo/yhc

Neil,
On 1/14/07, Neil Mitchell
available as a fully qualified name. I think the solution would be to do:
module Ix(module Data.Ix) where
import Data.Ix
That may work, but I'm not 100% sure.
Unfortunately no. This did not work, error messages were the same. -- Dimitry Golubovsky Anywhere on the Web

Hi
This is now bug 90: http://code.google.com/p/yhc/issues/detail?id=90
Its something that really needs a whole front-end simplification and
investigation, and should be cured then.
Thanks
Neil
On 1/15/07, Dimitry Golubovsky
Neil,
On 1/14/07, Neil Mitchell
wrote: available as a fully qualified name. I think the solution would be to do:
module Ix(module Data.Ix) where
import Data.Ix
That may work, but I'm not 100% sure.
Unfortunately no. This did not work, error messages were the same.
-- Dimitry Golubovsky
Anywhere on the Web
participants (2)
-
Dimitry Golubovsky
-
Neil Mitchell