[Haskell-cafe] circular imports
Ivan Lazar Miljenovic
ivan.miljenovic at gmail.com
Mon Sep 6 23:48:56 EDT 2010
On 7 September 2010 03:44, Edward Z. Yang <ezyang at mit.edu> wrote:
> Excerpts from Evan Laforge's message of Mon Sep 06 13:30:43 -0400 2010:
>> I feel like the circular imports problem is worse in haskell than
>> other languages. Maybe because there is a tendency to centralize all
>> state, since you need to define it along with your state monad. But
>> the state monad module must be one of the lower level ones, since all
>> modules that use it must import it. However, the tendency for bits of
>> typed data to migrate into the state means it's easy for it to
>> eventually want to import one of its importers. And the state monad
>> module gets larger and larger (the largest modules in my system are
>> those that define state monads: 1186 lines, 706 lines, 1156
>> lines---the rest tend to be 100--300 lines).
>
> I have used hs-boot files to this effect. I separated data and functionality,
> and typeclasses, which must be in the same module as data or are considered
> orphaned, get definitions via a circular import.
I'm just getting to the point where I have a similar problem. I was
thinking about splitting instances off from the classes (and telling
GHC to not worry about orphaned instances for the instance-only
modules) but then realised that some instance declarations would be
circular as well, so I have to either use hs-boot files, define
everything in one big module and then re-export them in ways that make
sense or define all instances in one big module (at least for those
types which have circular deps among instances) and re-export
accordingly.
--
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com
More information about the Haskell-Cafe
mailing list