Вопросы с тегом «lexical-scoping»

31
Почему `let 'быстрее с лексической областью?

Читая исходный код dolistмакроса, я наткнулся на следующий комментарий. ;; Это не надежный тест, но он не имеет значения, потому что обе семантики являются приемлемыми, одна из них немного быстрее с динамическим определением области, а другая немного быстрее (и имеет более чистую семантику) с...

14
Почему setq и set quote действуют по-разному в переменных с привязкой let с лексической областью действия?

У меня была ошибка в одном из моих расширений, которая в итоге оказалась вызвана setнеработоспособностью, как я ожидал: ;; -*- lexical-binding: t -*- (let ((a nil)) (setq a t) (print a)) (let ((a nil)) (set 'a t) (print a)) при запуске с emacs -Q --batch -l temp.elпринтами: t nil Это кажется мне...

13
Функция defun внутри let с лексической привязкой выдает предупреждение при байтовой компиляции «функция не известна как определенная»

Я хочу получить эффект статической переменной, используя defunвнутри letс лексической привязкой для создания замыкания. Однако при байтовой компиляции файла я получаю предупреждение. Я делаю что-то не так, или если нет, есть ли способ подавить это предупреждение? Я создал MCVE: ;; -*-...

12
Каковы потенциальные ловушки включения лексического связывания для буфера?

Это было вдохновлено обсуждением лексической привязки против лексической-let в этом вопросе . В лексико-связывающим дает возможность иметь полезные затворы людей могут быть использованы для других языков , таких как JavaScript , почему бы вы не позволили ему все время? Предполагая обратную...

12
Работа с «Предупреждение: присвоение свободной переменной», когда определенные библиотеки могут отсутствовать в дизайне

Байтная компиляция моего режима: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) дает предупреждение: Warning: assignment to free variable `er/try-expand-list' Это нормальная ситуация, потому что...

11
Как определяется переменная область видимости для макросов?

Возьмите следующий пример макроса, определенный в macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) И возьмите следующую функцию, определенную в другом файле , function.el. (defun some-function () (some-macro (do-something))) Когда function.elбайтовая компиляция...

10
Почему определение области видимости по-разному работает без инициализации?

Предположим, у меня есть файл с именем elisp-defvar-test.el: ;;; elisp-defvar-test.el --- -*- lexical-binding: t -*- (defvar my-dynamic-var) (defun f1 (x) "Should return X." (let ((my-dynamic-var x)) (f2))) (defun f2 () "Returns the current value of `my-dynamic-var'." my-dynamic-var) (provide...