== Quote from BCS (n...@anon.com)'s article > Show me ONE thing that can be done using run time meta programming that can't > be done as well or better with run time, non-dynamic, non-meta and/or compile > time meta. Unless I'm totally clueless as to what people are talking about > when they say runtime meta, I don't think you will be able to. Anything that > amounts to making the syntax look nicer can be done as compile time meta > and anything else can be done with data structure walking and interpretation. > All of that is available in non dynamic languages. > I guess I should concede the eval function but if you don't like CTFE+mixin...
Oh come on. I'm as much a fan of D metaprogramming as anyone, but even I admit that there are certain things that static languages just suck at. One day I got really addicted to std.algorithm and decided I wanted similar functionality for text filters from a command line, so I wrote map, filter and count scripts that take predicates specified at the command line. filter.py: import sys pred = eval('lambda line: ' + sys.argv[2]) for line in open(sys.argv[1]): if pred(line) : print line.strip() Usage: filter.py foo.txt "float( line.split()[1]) < 5.0" Metaprogramming isn't very rigorously defined, but this has to qualify. Try writing something similar in D.