
Thanks for replies. CPP approach seems to be what I would like to achieve, but it looks more like a hack than a real solution. That said, I like the idea of creating a module that acts as an external interface to the library and I I don't mind sacrificing encapsulation within the package itself. If it works for project as big as Yesod it should work for me.
If you use Hspec[1] for testing, you do not have to assemble your individual tests manually into a test suit; hspec-discover[2] takes care of that. I guess that I like to have my tests organized manually. It takes a bit of more work and there's a risk that I forget to add some test to the suite, but I'm willing to accept these drawbacks and get more fine-grained control in return.
Jan