Hi,

As "hs-boot" is ghc specific method I am asking on this glasgow-haskell-users mailing list first.

My hprotoc program converts message definitions into Haskell modules, and mimicking the expected OOP-like namespaces has been successful so far.

It is possible to define messages and keys that create recursive modules dependencies, and I have left fixing this to the user. For the examples I have run across this has been possible to do manually.

But I can easily write a file which generates three recursively defined modules with keys that I have not been able to fix with hs-boot files.

I have created toy versions of the 3 modules and their "key"s which contain the problem.

Can anyone see how to use hs-boot files to compile the three modules below?
Note: The 3 modules ought to be the same aside from cyclic [a,b,c] replacement:

module A(A(..),akeybc,akeycb) where

import B(B)
import B(bkeyac)
import C(C)
import C(ckeyab)

data A = A { name :: String }

akeybc :: Either B (Maybe C)
akeybc = Right Nothing

akeycb :: Either C (Maybe B)
akeycb = Right Nothing

instance Show A where
  show a = concat [name a,show bkeyac,show ckeyab]


module B(B(..),bkeyca,bkeyac) where

import A(A)
import A(akeybc)
import C(C)
import C(ckeyba)

data B = B { name :: String }

bkeyca :: Either C (Maybe A)
bkeyca = Right Nothing

bkeyac :: Either A (Maybe C)
bkeyac = Right Nothing

instance Show B where
  show b = concat [name b,show ckeyba,show akeybc]


module C(C(..),ckeyab,ckeyba) where

import A(A)
import A(akeycb)
import B(B)
import B(bkeyca)

data C = C { name :: String }

ckeyab :: Either A (Maybe B)
ckeyab = Right Nothing

ckeyba :: Either B (Maybe A)
ckeyba = Right Nothing

instance Show C where
  show c = concat [name c,show akeycb,show bkeyca]

It would be disappointing if I had to move the "key"s into separate modules/namespaces to allow for a solution using hs-boot files.

Thanks,
  Chris
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to