<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><div>Because it is part of the external interface for dependencies of those modules and therefore triggers both an API change (which here has no effect) and an ABI change because internals of a module can leak out via .hi file exposure for cross-module inlining. There is no way to guard against that last, and avoiding it would usually be even more expensive than just treating the entire .hi as a dependency that changed (the dependency graph would *explode* if you had to track dependencies per possible inlining).<br></div></span><div><br></div><div>And no, you do not want to defeat inlining, *especially* with lens. Performance will utterly tank.</div></div></div></blockquote><div><br></div><div><br></div><div>I probably have not understood what you're saying. In LensClasses.hs if I simply add a new HasAddress class without defining an instance anywhere in the app, it triggers a re-compile. Is this changing the API / ABI in any way?</div><div><br></div><div>-- Saurabh.</div></div>
</div></div>