Personally, I'd say that only exported symbols are usable in future cells, and then I'd load each cell in its own module and have each module automatically import all previous modules/cells.
Advantages: * Very easy. * Works without any parsing or macros. * You get cell/module local variables as well, which could be useful. * You're pointing to the real symbol, not a copy/recreation, so you can update it across multiple cells and it will do the right thing automatically. You could potentially use Nim devel and `import {.all.}` if you really want to access unexported symbols using the same approach. I'm not positive this would work, but it seems like it should.