Could save some computation in cases where expressions are reused.
One tricky bit is what to do about internal generators. By analogy with map each appearance in the tree, as a tree, should be independent? But then the entire downstream gets influenced.