
John Meacham
module A where import B a = 32 + b default (Integer)
module B where import A b = 32 + a default (Int)
so, what types do 'a' and 'b' get? ghc sort of sidesteps the issues with the hi-boot files, so they will get whatever is declared in those, but what is the correct thing that should happen in a fully recursive module supporting haskell compiler?
My guess is that technically the program is ambiguous: both a and b could be either Int or Integer, and in the absence of .hi-boot file there is not enough information available to the compiler to choose one over the other. Ideally, the ambiguity should be reported as an error to be fixed by the user. It isn't so terribly different from the (show . read) ambiguity, in that it can easily be resolved by adding a type signature. Regards, Malcolm