In short, it doesn't. And I think the fact that Clojure is as fast as it is
is testament to how little of an impact many of these optimizations have.
But also, don't assume that Clojure doesn't get many of these optimizations
for free from the JVM. Auto-caching is a weird one, I think most people
I tried to find old threads for my question but could not find any suitable
answer.
My question is that unlike haskell, which separates I/O side effect code
from pure code, and hence can easily do other optimizations
like auto-caching results, out of flow execution etc, what is the clojure
way