The lisp model of programming is generally: write a function, evaluate it, interactively call it with some arguments, iterate. Jupyter notebooks are similar. Why not automatically evaluate definitions (not expressions) whilst working? It seems like it could be a satisfying way to work with code.