So, one of my goals with my new Lisp is to faithfully reuse large, modular parts of functionality developed by others, and proven in the field. Preferably for decades. In a way, this changes PL design from invention to curation, and I'm very happy with it.
Here's what Ell is made of:
- evaluation and expansion: R6RS Scheme (but as a Lisp-2)
- control flow: Common Lisp
- micromodule system: Chez Scheme
- compilation and phase separation: PLT Scheme
- macros: SRFI 72
- object system: proper subset of CLOS
- inline C: Goo
- condition system: Dylan
- dynamic variables: ISLISP
Like Peter van Roy, I think that programming-in-the-small is a solved problem. Really, innovating in language design microfeatures, like say, some new way to pass parameters, is so boring, and will with great likelihood make the language landscape even more trite than it is now. Much better to reuse something that already exists, and adapt it faithfully.
All of this applies only, of course, if you're building a language that follows some common plan, like say "object-oriented dynamic language". In that case, please reuse. If you're doing something totally new and/or crazy (like, say, a functional reactive PL), you're of course free to invent what you want.