Evidently I'm a big idiot, as I closed the <UL> tag too late. Here it is, reformatted:
Those who don't learn from history are doomed to repeat it. While you bash Lisp, the great Perl hackers are trying hard to imitate it.
- Lisp was the first language implemented in itself -- the first one to have an eval function at all!
- Lexical scope and closures (my() and anonymous subs, respectively) were invented in Scheme (25 years ago).
- Lispers were early adopters of OO. In the early 70's we already had excellent OO extensions such as LOOPS, and today's full-featured Common Lisp specification includes a Common Lisp Object System which is incredibly complete and flexible (not to mention complex!).
- Where'd you think map() came from? What about grep()? (Of course, it's called filter in scheme...)
- Hell, even the idea of lhs subroutine calls (new as of Perl 5.6) came up in Lisp - some good 30 years ago, even!
But why linger in the past? :) The features which are standard in R5RS-compliant Scheme implementations today (e.g. continuations, promises, hygienic macros, even the trivial but enormously useful
let variants for scoping with variables), as well as some of the nicer ones from particular extensions (e.g. logical programming and soft pattern-matching-based typing as in Schelog) just might find their way into Perl 7.0, ten years from now. (Only in an uglier, more C-ish way, of course. :))
There it is now... :)