The problem with caching is just that sometimes the cache falls out of sync; you want to evaluate some complex problem f(x), and if you’ve previously evaluated some similar f(y) it’s faster to evaluate “if (resembles_y(x)) then cached_f(y) else f(x)”, but if resembles_y(x) isn’t precise enough, then you’ve overgeneralized.
But the correction “Stifle it” doesn’t seem to be pinpoint-precise either, does it? It’s an overgeneralization that just generalizes to the opposite conclusion.
If you don’t want people to overgeneralize, then you have to be specific—“in cases where A, B, or C hold, then you want to avoid giving offense; if D, E, or F hold then giving offense may have higher utility”, etc—and just trying to begin nailing down this kind of precision is likely to require hundreds of comments, not just a couple sentences.
The problem with caching is just that sometimes the cache falls out of sync; you want to evaluate some complex problem f(x), and if you’ve previously evaluated some similar f(y) it’s faster to evaluate “if (resembles_y(x)) then cached_f(y) else f(x)”, but if resembles_y(x) isn’t precise enough, then you’ve overgeneralized.
But the correction “Stifle it” doesn’t seem to be pinpoint-precise either, does it? It’s an overgeneralization that just generalizes to the opposite conclusion.
If you don’t want people to overgeneralize, then you have to be specific—“in cases where A, B, or C hold, then you want to avoid giving offense; if D, E, or F hold then giving offense may have higher utility”, etc—and just trying to begin nailing down this kind of precision is likely to require hundreds of comments, not just a couple sentences.