Emacs Lisp (Емакс Лісп, ELisp) — діалект мови програмування Лісп, який використовується в текстових редакторах GNU Emacs та XEmacs для реалізації більшої частини функцій редагування. Як правило, програми на ELisp пишуться користувачами цих текстових редакторів для розширення їхніх функціональних можливостей.

Emacs Lisp
Парадигмафункційне програмування, метапрограмування і рефлексія
Дата появи1985
ТворціРічард Столмен і Guy L. Steeled
Розробникпроєкт GNU
Останній реліз
Система типізаціїдинамічна типізація[d] і строга типізація
Під впливом відCommon Lisp і Maclispd
ЛіцензіяGNU GPL 3
Звичайні розширення файлів.el[1] або .elc[1]
Вебсайтgnu.org/software/emacs

Особливості

ред.

В Емакс Ліспі використовуються динамічні, а не статичні (лексичні) області видимості. Якщо змінну задекларовано в області видимості функції, вона автоматично стає доступною всім підпрограмам, викликаним із цієї функції. Такий підхід було обрано з метою оптимізації; в той час лексичні діапазони видимості були незвичними з невідомою швидкодією[2]. Динамічні області видимості мали також запропонувати більше гнучкості та можливостей для налаштувань. Однак, динамічні області видимості мають декілька недоліків. По-перше, вони можуть призводити до дефектів у великих програмах, через небажану взаємодію між змінними різних функцій. По-друге, доступ до змінних в динамічній області видимості, зазвичай, повільніший ніж у лексичних.

У версії 24.1, нарешті, було додано опціональну лексичну область видимості[недоступне посилання], для ввімкнення якої необхідно присвоїти змінній lexical-binding значення t.

Інтерпретатор Емакс Лісп не підтримує оптимізацію хвостової рекурсії.

Джерела інформації

ред.
  1. а б https://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Libraries.html
  2. «Emacs Lisp uses dynamic scoping because simple implementations of lexical scoping are slow.»[1] [Архівовано 22 жовтня 2007 у Wayback Machine.]; «I asked RMS when he was implementing emacs lisp why it was dynamically scoped and his exact reply was that lexical scope was too inefficient.»[2] [Архівовано 13 листопада 2007 у Wayback Machine.]

Див. також

ред.
  • wikipedia-mode — програма на Емакс Лісп для полегшення редагування статей Вікіпедії.

Посилання

ред.