One of the things I love most about programming in Elisp is what I (and others) call interactive programming. You can write a little snippet of code—even as small as an expression—and try it out immediately without having to build any special test scaffolding. Working this way, you can incrementally build up to your final code by adding more and more snippets to it and trying things out as you go. This previous post of mine points to two brilliant examples of this. In terms of Emacs itself, you can change one of it’s core functions and have the new version take effect immediately without restarting Emacs or doing anything other than a Ctrl+x Ctrl+e.
I recently stumbled upon an old post by Tibor Simko in which he expands upon that idea by talking about runtime redefinition in Common Lisp. It’s a really great post and helps explain why Lisp languages are so much fun to program in. Even when you get a run-time error, you get dumped into the debugger where you can fix the error and take up the computation exactly where it left off except with the corrected code.
Simko illustrates this and more in his post. Even though it’s almost 15 years old, it’s as relevant and interesting today as when it was first written. If you have any interest at all in Lisp languages, be sure to take a couple of minutes to read it.