someone was asking today how to get GHCi to not interpret the entire large project for the module they're working on. i debugged this and found cabal was passing every module in the ghci invocation, then dug through cabal sources to find that there's an option for not doing that!
use cabal repl --repl-no-load to start up a repl, then manually :load just the module you want (or if you want private symbols, :m + *YourModule). it will reload much much faster in a large project.