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