2011-12-08 17 views
29

Voglio imparare il linguaggio Lisp, poiché il mio editor è emacs, preferisco emacs lisp.Quali sono le principali differenze tra Emacs Lisp e Common Lisp?

Qualcuno può darmi qualche suggerimento per imparare lisp, emacs lisp o common lisp?

Quali sono le principali differenze tra questi due?

+0

Inizia da qui: http : //en.wikipedia.org/wiki/Elisp Ha alcuni buoni collegamenti in basso. – aartist

+0

Se vuoi imparare Lisp a causa di emacs - impara Emacs Lisp. Se vuoi sviluppare applicazioni reali, meglio apprendere Common Lisp o anche Clojure. – alexurba

+1

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

risposta

26

C'è un bel po 'di crossover, specialmente a livello di principianti, quindi qualsiasi partenza inizierai a passare dall'altra parte.

Alcune delle principali differenze:

  • elisp ha usato tradizionalmente regole di visibilità dinamica; Common Lisp utilizza regole di scoping lessicale. Con lo scope dinamico, una funzione può accedere alle variabili locali dichiarate nelle funzioni di chiamata e generalmente non è più andata a buon fine. Emacs ha un modulo lexical-let che simula lo scope lessicale e le versioni recenti di emacs consentono lo scope lessicale opzionale su base funzione per funzione.

  • l'elisp non ha chiusure, il che rende difficili le funzioni di composizione e il curry. C'è una funzione apply-partially che funziona in modo simile al currying. Si noti che il modulo lexical-let introdotto in Emacs 24 rende possibile la produzione di chiusure tramite scope lessicale.

  • Gran parte della libreria Common Lisp che è stata creata nel tempo non è disponibile in elisp. Un sottoinsieme è fornito dal pacchetto elisp cl

  • elisp non esegue l'ottimizzazione di coda.

+7

Il commento "generalmente caduto in disgrazia" non si applica a Emacs stesso, ovviamente, dove lo scope dinamico è incredibilmente utile. – phils

+1

Solo per aggiungere un po 'di informazioni attuali qui, Emacs 24 aggiunge il binding lessicale per Emacs Lisp quando specificato. –

+3

Ora Emacs Lisp ha il permesso lessicale e la libreria compat è chiamata cl-lib invece di cl – PuercoPop