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.