
8 May
2013
8 May
'13
6:46 a.m.
I wonder whether it's always possible to break cycles using GHC's .hs-boot files. Consider the following schematic example: module A where import B data A f :: B -> A f = undefined B.g module B where import A data B g :: A -> B g = undefined A.f A.hs-boot must give a type signature for f, and since the signature contains 'B', it must import 'B'. Ditto for B.hs-boot — it must import 'A'. Even if we treat all imports as {-# SOURCE #-}, there is still a cycle between the hs-boot files. So, am I right in understanding that these recursive modules cannot be compiled by GHC at all? Roman