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

3
Почему `let 'быстрее с лексической областью?
Читая исходный код dolistмакроса, я наткнулся на следующий комментарий. ;; Это не надежный тест, но он не имеет значения, потому что обе семантики являются приемлемыми, одна из них немного быстрее с динамическим определением области, а другая немного быстрее (и имеет более чистую семантику) с лексической областью действия . Который ссылался …

1
Почему 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 Это …

3
Функция defun внутри let с лексической привязкой выдает предупреждение при байтовой компиляции «функция не известна как определенная»
Я хочу получить эффект статической переменной, используя defunвнутри letс лексической привязкой для создания замыкания. Однако при байтовой компиляции файла я получаю предупреждение. Я делаю что-то не так, или если нет, есть ли способ подавить это предупреждение? Я создал MCVE: ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () …

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

1
Работа с «Предупреждение: присвоение свободной переменной», когда определенные библиотеки могут отсутствовать в дизайне
Байтная компиляция моего режима: (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' Это нормальная ситуация, потому что er/try-expand-listопределяется в externa; библиотека, expand-regionкоторая находится на http://elpa.gnu.org Мой режим регистрирует расширение для expand-regionбиблиотеки, но можно запустить мой режим без expand-regionрежима. …

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

3
Почему определение области видимости по-разному работает без инициализации?
Предположим, у меня есть файл с именем 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 'elisp-dynamic-test) ;;; elisp-defvar-test.el ends here Я загружаю этот файл, затем захожу в …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.