|
Lisp is a great dynamic programming language. One particular feature that makes it really great for emacs (and a lot of other applications), is that you can define and COMPILE new functions, or even REDEFINE old functions. Nowadays a lot of dynamic languages have followed the lisp model. They didn't exist when GNU emacs development started. In the context of emacs, it allows you to edit a new command, and have the lisp in emacs evaluate it (define it) and compile it, hence integrating into emacs code, and making it available for further use. Or indeed, since most of emacs is also implemented in lisp, you can redefine any emacs function the same way, and have it taken into account immediately. So basically, you are not "extending" emacs so much as you are just modifying it. Also, lisp has alot of nice and fun features, like lisp macros, first class functions (and now closures), allowing for high order functions, which let you create abstractions easily when programming. Contrarily to most other custom application specific scripting language, lisp is a real algorithmic programming language without artificial limitations. |