Запитання з тегом «lexical-scoping»

3
Чому "пускають" швидше за допомогою лексичного обсягу?
Читаючи вихідний код для dolistмакросу, я наткнувся на наступний коментар. ;; Це не є надійним тестом, але це не має значення, тому що обидві семантики є прийнятними, одне трохи швидше при динамічному оцінюванні, а інше трохи швидше (і має більш чітку семантику) з лексичним визначенням . Який посилався на цей …

1
Чому setq і set quo діють по-різному на обмежених змінних з лексичною сферою?
В одному з моїх розширень виявилася помилка, яка, зрештою, була викликана тим, що вона 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з лексичним зв'язуванням для створення закриття. Однак при байтовому компілюванні файлу я отримую попередження. Я роблю щось не так, чи ні, чи є спосіб придушити це попередження? Я створив MCVE: ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () …

1
Які можливі підводні помилки, що дозволяють лексичним зв'язуванням для буфера?
На це надихнуло обговорення лексичного зв’язку проти лексичного в цьому питанні . Оскільки лексичні обов'язковість дає вам можливість мати корисні закриття, до яких люди можуть використовуватись іншими мовами, такими як 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визначена зовнішня; бібліотека, 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.