Caterwaul comes with a modular decompiler, macroexpander, and a compiler; these components allow editing code in a first-class way.
The library is something of a conceptual solution, and the developer himself points it out in the documentation:
[After describing that the learning curve is an overhang]
It’s not actually quite this bad. It took me about two weeks to understand
how to use Caterwaul after I wrote it.
There’s an integrated shell in the homepage that allows you to toy around with caterwaul.
- Website: http://www.caterwauljs.org/