Sometimes metaprogramming (macros etc) is a useful technique for refactoring, simply because you can try and then discard different designs: https://blog.metaobject.com/2018/11/refactoring-towards-language.html
(I've certainly written then thrown away macros when writing Lisp!)
miniblog.
Related Posts
A lightweight anonymous function syntax seems to reduce the need for metaprogramming.
I've written custom loop constructs with lisp macros, but Smalltalk seems to do just fine with blocks and method calls.
The read function (lex+parse) in lisp is really handy for building little analysis or metaprogramming tools. The runtime has it, so why not allow users to use it?
However, there's no equivalent for just lexing AFAIK. It's a shame because the same arguments apply!
Dynamically defining properties on Python objects: https://gist.github.com/Wilfred/49b0409c6489f1bdf5a5c98a488b31b5 (forced me to use some crazy metaprogramming!)
