Boilerplate is an implicit abstraction: recognisable generality, but lacking a coded mechanism.
These could always be manually transformed to fit standard abstractions, such as functions or classes. But Lisp's macro facility instead allows them to be captured more 'directly'.
Now, whether fewer standardised abstractions is better/worse than more various tailored abstractions, is a deeper question . . .
These could always be manually transformed to fit standard abstractions, such as functions or classes. But Lisp's macro facility instead allows them to be captured more 'directly'.
Now, whether fewer standardised abstractions is better/worse than more various tailored abstractions, is a deeper question . . .