Emacs Lisp
Emacs Lisp (czasami nazywany Elisp) – dialekt języka programowania Lisp wykorzystywany przez edytory tekstu GNU Emacs i XEmacs, używany do pisania programów, które wspomagają pisanie tekstu oraz rozszerzają możliwości edytora Emacs. Większość funkcji edytora Emacs została napisana w Emacs Lisp-ie, oprócz między innymi niskopoziomowych funkcji wyświetlających oraz interpretera i kompilatora Emacs Lisp, które zostały napisane w języku C.
Programy w Emacs Lisp są zapisywane jako pliki tekstowe z rozszerzeniem ".el", ale istnieje możliwość kompilacji za pomocą wbudowanego kompilatora do kodu bajtowego, dzięki czemu osiąga się wyższą wydajność. Kod bajtowy jest zapisywany w plikach z rozszerzeniem ".elc". Programy Emacs Lisp-a są zapisywane w bibliotekach i ładowane w razie potrzeby[1], najczęściej są to tzw. tryby Emacsa[2], uruchamiane dla określonych typów plików dodające nowe funkcje, skróty klawiszowe czy Kolorowanie składni[3]. W Emacsie naciśnięcie dowolnego klawisza powoduje wywołanie jakiejś funkcji napisanej w Emacs Lispie[4], którą można dowolnie zmieniać. Plik konfiguracyjny Emacsa jest programem napisanym w Emacs Lispie.
Emacs Lisp charakteryzuje się dynamicznym wiązaniem zmiennych. Posiada wbudowany Garbage collector. W odróżnieniu od innych dialektów lispa nie optymalizuje wywołań z rekurencją ogonową[5].
Cechy dialektu
- dynamiczne wiązanie zmiennych
- deklaracje funkcji przez defun jak w Common Lisp
- dwie przestrzenie nazw (funkcje i zwykłe zmienne) jak w Common Lips
Przykład kodu
(defun square (x) (* x x))
(defun call (fn num) (funcall fn num))
(call #'square 10)
;; 100
Zobacz też
Przypisy
- ↑ Richard Stallman: EMACS: The Extensible, Customizable Display Editor (ang.). 1981.
- ↑ Rozdział "Major Modes" w Oficjalnym Podręczniku GNU Emacsa (ang.).
- ↑ Oficjalny Podręcznik GNU Emacsa (ang.).
- ↑ zazwyczaj jest to funkcja self-insert-command, która wstawia ostatni wciśnięty znak do bufora
- ↑ Lisp: Common Lisp, Scheme, Clojure, Emacs Lisp (hyperpolyglot.org) (ang.).