yi is pretty heavy, as these things go. So it's not too surprising that it's taking a while.

GHC does try to recompile as little as possible...but "as little as possible" can be quite a lot. Inlining, and other optimizations GHC performs, makes the recompilation checker's job tricky; see [1]. Generally if you change a file you'll need to recompile its dependencies, and *their* dependencies, and so on.

If you're coding along and just need a typecheck, ghci is your friend. Specifically, the :reload command tends to be fast. (You'll need to :load yourFile.hs the first time, of course.)

You might also see if yi's  -fhacking flag is helpful. It looks like it might be relevant, though I don't know either yi or your use case well enough to say for sure.

General advice on speeding compilation is here: [2]. Most of it isn't all that relevant to you at the moment, since you're hacking on someone else's package. But always good to know.

Best of luck,

Ben

[1]: http://www.haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html#recomp
[2]: http://www.haskell.org/ghc/docs/latest/html/users_guide/sooner-faster-quicker.html#sooner