2011-12-08 17 views
29

Quiero aprender el lenguaje lisp, ya que mi editor es emacs, prefiero emacs lisp.¿Cuáles son las principales diferencias entre Emacs Lisp y Common Lisp?

¿Alguien me puede dar algunas sugerencias para aprender lisp, emacs lisp o el ceceo común?

¿Cuáles son las principales diferencias entre esos dos?

+0

inicio aquí: http : //en.wikipedia.org/wiki/Elisp Tiene algunos buenos enlaces en la parte inferior. – aartist

+0

Si quiere aprender Lisp por emacs, aprenda Emacs Lisp. Si desea desarrollar aplicaciones reales, mejor aprenda Common Lisp o incluso Clojure. – alexurba

+1

Relacionados: http://stackoverflow.com/questions/3840443/how-to-go-about-learning-common-lisp-and-emacs-lisp –

Respuesta

26

Hay un poco de cruce, especialmente en el nivel de principiante, por lo que lo que comiences se transferirá principalmente al otro.

Algunas de las principales diferencias:

  • elisp ha utilizado tradicionalmente reglas de alcance dinámico; Common Lisp usa reglas de alcance léxico. Con el alcance dinámico, una función puede acceder a las variables locales declaradas en las funciones de llamada y generalmente ha caído en desgracia. Emacs tiene un formulario lexical-let que simula el alcance léxico y las versiones recientes de emacs permiten el alcance léxico opcional función por función.

  • elisp no tiene cierres, lo que dificulta las funciones de composición y el curido. Hay una función apply-partially que funciona de manera similar al currying. Tenga en cuenta que el formulario lexical-let introducido en Emacs 24 permite realizar cierres mediante el alcance léxico.

  • Gran parte de la biblioteca Common Lisp que se ha creado a lo largo del tiempo no está disponible en elisp. El paquete elisp cl proporciona un subconjunto

  • elisp no realiza la optimización de la llamada de cola.

+7

El comentario de "generalmente caído en desgracia" no se aplica a Emacs, por supuesto, donde el alcance dinámico es increíblemente útil. – phils

+1

Solo para agregar un poco de información actual aquí, Emacs 24 agrega enlace léxico para Emacs Lisp cuando se especifica. –

+3

Ahora, Emacs Lisp tiene permiso léxico y la biblioteca compatible se llama cl-lib en lugar de cl – PuercoPop

Cuestiones relacionadas