LINUX.ORG.RU

(lambda () (linum-mode))
это выражение, возвращающее функцию, которая не принимает аргументов, в процессе своего выполнения вызывает функцию linum-mode, и возвращает результат вычисления последней.

Love5an
()
Ответ на: комментарий от Sectoid

нет. так в CL. В Emacs lisp у символа только 1 слот, потому просто 'linum-mode.

буду знать)

pseudo-cat ★★★
()
Ответ на: комментарий от Sphinx

А зачем так писать?

Вот как я это пытаюсь использовать:

(defun def-prog-opts (name)
  "общие настройки для языков програмирования"
  (add-hook name
	    (lambda ()
	      (linum-mode)
	      (flyspell-prog-mode) ;;проверка коментов на лету
	      (ispell-change-dictionary "british") ;;другой словарь
	      (auto-fill-mode) ;;перенос строк
	      (eldoc-mode)
	      )
	    ))
(def-prog-opts 'python-mode-hook)
(def-prog-opts 'c-mode-common-hook)
Вроде все работает, но я не понимаю почему и как можно по аналогии использовать лямбду в последних двух строчках

Fredy
() автор топика
Ответ на: комментарий от Fredy

(lambda () (foo)) даёт функцию без аргументов, которая просто
выполняет функцию foo. Лямбды в емаксовом лиспе самоцитируются,
поэтому и работает.

Sphinx ★★☆☆
()
Ответ на: комментарий от Sphinx

аа дошло... Т.е. обычно ловушка выполняет одну функцию, а чтобы выполнить сразу несколько, ей отдается функция выполняющая несколько других функций. Я прав? Самоцитирование это как?

Fredy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.