This is very neat, but these days I am truly enamoured with "reactive" notebooks. They are rather orthogonal to the concern here. Reactive notebooks automatically build a dependency tree between cells. When you edit a cell, all cells depending on it get re-evaluated.
It is extremely valuable for reproducibility.
My favorite example is Pluto Notebooks in Julia (very Julia-specific), but I have seen (maybe less polished) similar tools in other languages too: https://plutojl.org/
On the other hand, when it comes to caching, Mandala (in python), brings the best both from caching and reactivity. A truly amazing memoization tool for computational graphs, much more sophisticated and more powerful than alternatives: https://github.com/amakelov/mandala
It is extremely valuable for reproducibility.
My favorite example is Pluto Notebooks in Julia (very Julia-specific), but I have seen (maybe less polished) similar tools in other languages too: https://plutojl.org/
On the other hand, when it comes to caching, Mandala (in python), brings the best both from caching and reactivity. A truly amazing memoization tool for computational graphs, much more sophisticated and more powerful than alternatives: https://github.com/amakelov/mandala