[Yhc] Re-exports problem

Neil Mitchell ndmitchell at gmail.com
Sun Jan 14 10:36:13 EST 2007


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 <golubovsky at gmail.com> wrote:
> 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/yhc
>


More information about the Yhc mailing list