Neat link!
I've been using Lisp for something like 13 years and it's the OG self modifying high level language.
Essentially during the early days of AI in the 60s and 70s they designed a language (family) that was programmable because the nature of what they were creating wasn't well known so the language had to be supremely flexible. You can define new pieces of syntax and abstractions while it runs (and newer implementations even compile without stopping).
One area of classic era AI research was the ability to write functions that defined themselves and optimised themselves.
This can be done if the function has the ability to redefine parts of itself over N many trials of a task where some variations are found to be more efficient.
One practical use today would be a function that "learns" which approaches are best and then rewrites an internal strategy while testing every once in a while.
But, all this is possible because the entire syntax tree is left open and the language is made of lists which naturally can be modified by the language itself. It also helps that the language can delay evaluation and functions can be used to build and return new first class functions through combinations of other functions.