Hi Bernard,
Thank you for this very informative response.
Yes, I am fully aware of Mark Kotanchek's excellent DataModeler system, having used it on several occasions and I can highly recommend it.
I was aware, too, of the Shifrin post on meta-programming. His exposition is much more thorough and detailed than my own outline and covers far more ground. The brief set out in my post was limited to the creation of a function generator. The distinction between GA and GP is a nice one, but I am not sure I buy into it, especially in the case of a functional language like WL, in which the sort of programming constructs you refer to are typically replaced by listable operators. In a language like WL, programs == functions, largely.
I was unaware of the interest of the great Michael Trott in the subject of meta-programming, but I should hardly be surprised - is there any area of MMA that the man has not explored? Nor was I aware of your own efforts in this field, which are also very interesting.
In any event, it was not my intention to create the impression that I was suggesting something radically new. On the contrary, I expressed my puzzlement as to why the well-known concept of meta-programming had not been taken up with the sort of enthusiasm I might have expected. I was also seeking to draw attention to the fact that, given the scope of development of the Wolfram Language in the last few iterations, meta-programming looks much more feasible than it was when Michael was writing his magnum opus.
There is an issue here that I would like to draw out further. I believe that the Wolfram Language is in many ways far better suited to meta-programming than many other traditional languages. Firstly, as I have already pointed out, WL provides ready access to the constructs of the language itself, enabling them to be conveniently manipulated like objects.
Another observation, perhaps a more important one, is this: that for functional programming languages like WL the key to success must surely be related to, if not determined by, the scope of the functionality they encompass. To take an example, in my own field, econometrics, there was almost no reason to prefer MMA before time series objects were introduced; now, however, I believe that MMA is positioned to be come a leader (if not the leader) in financial analysis and econometrics thanks to the enormous array of new functionality that has been added in recent releases (FinancialData, TimeSeries, FinancialDerivative, Random Process, etc, etc).
If that is true, then one of the keys to gaining a competitive advantage as a functional programming language is the speed with which new functionality can be developed. In that context, the ability to generate such functionality in an automated way takes on a strategic significance.