It would be nice to automate this process of refining the locations of deepseq. Something simple that should work is a binary partitioning of descendant expressions, into those which propagate the deepseq, and those which do not. Auto-recompilation and auto-profile-analysis can determine whether the change maintains leak-free behaviour, guiding the search for the smallest expressions which need forcing. The developer may prefer to force at a higher level, in case this minimal set is highly [ramified/-?-] (high cardinality), but mostly we're interested in those expressions deepest in the parse tree that, forced, suffice to staunch the leak.
The Heaply page has more info on a nascent implementation.
Andrew Seniuk 2014
rasfar@gmail.com