> Для юзеров Emacs ты хотел сказать.
Нет, я хотел сказать то, что сказал: для фанатов Столлмана. Столлман принципиальный противник Common Lisp’а, и некоторые фишки и соглашения Common Lisp’а он из вредности не включает в elisp. Например, &key аргументы. Столлман считает, что это лишнее, и что вместо этого надо пользоваться лексическими биндами. То есть, грубо говоря, вместо
(buffer-name :buffer some-buffer)
по Столлману надо писать:
(let ((current-buffer some-buffer))
(buffer-name))
Это не реалистичный пример, потому как реально функция buffer-name всё ж принимает аргумент-буфер, но как &optional аргумент, а current-buffer вовсе не глобальная переменная, а функция, но суть разногласий Столлмана с именованными аргументами передаёт.
Помимо этого в Common Lisp есть CLOS, с его defclass и дженериками, то есть там где elisp реализует тип buffer на C, как встроенный тип, в Common Lisp’е возможно было бы сделать ровно то же самое, не вылезая из lisp’а, да ещё и таким образом, чтобы строковые функции работали бы и на буферах тоже. В elisp при большом желании тоже можно, но лишь при большом желании, и придётся переизобретать CLOS, по-крайней мере частично.
Common Lisp стандартизован, а значит программы на Common Lisp можно гонять в разных реализациях Common Lisp’а с минимальными изменениями. elisp же — это столлмановский вендорлок, который прибил emacs к говнолиспу, уйти с которого теперь не представляется возможным. Все попытки так и закончились ничем.
Настоящие мужики, предпочитающие Common Lisp, таскают с собой elisp’овый пакет, который некоторые фишки Common Lisp’а привносит в elisp.
|