On Wednesday, 21 December 2016 at 21:34:04 UTC, Andrei Alexandrescu wrote:
Instead of
"Any `pure` function that is not strongly pure cannot be memoized."
why not
"Any `pure` function that is not strongly pure _may not be assumed to
be_ memoizable."

Got it. Good point. Will do.


That worse than the current wording.

Strongly pure function can be memoized doesn't mean that non strongly pure function can never be, just that the compiler would have to prove it is correct to do so before doing it.

On the other hand, this new wording do not guarantee that the compiler can do memorization on strongly pure functions. I don't think this is reasonable and in effect, makes pure useless for the optimizer outside of trivial cases. If you lie to the compiler by bypassing the type system in the pure function, that's on you. All user should not be penalized because someone decided they were very smart and got hoisted by their own petard.

Reply via email to