Why having a separate module for types?
design-patterns, haskell, types
Solution
It's almost always done to avoid circular dependencies between modules. GHC handles them very poorly. They're theoretically allowed, but the mechanism is so painful they're nearly always avoided.
Problem
Why is it common to put classes and types definitions inside special Types module instead of placing them within corresponding namespace? For example, let's take Config record from Yi source code. Why has it been decided to define it inside Yi.Types instead of Yi.Config?