Language Design for Meta-programming in the Software Composition Domain

How would a language look like that is specially designed for solving meta-programming problems in the software composition domain? We present requirements for and design of Rascal, a new language for solving meta-programming problems that fit the Extract-Analyze-SYnthesize (EASY) paradigm.