Pytania otagowane jako lexical-scoping

3
Dlaczego „pozwól” szybciej dzięki zakresowi leksykalnemu?
Podczas czytania kodu źródłowego dolistmakra natrafiłem na następujący komentarz. ;; To nie jest wiarygodny test, ale nie ma to znaczenia, ponieważ obie semantyki są dopuszczalne, jedna jest nieco szybsza z dynamicznym określaniem zakresu, a druga jest nieco szybsza (i ma czystszą semantykę) z określaniem zakresu leksykalnego . Które odnosiły się …


3
Defun inside let z powiązaniem leksykalnym daje ostrzeżenie kompilacji bajtów „funkcja nie jest zdefiniowana”
Chcę uzyskać efekt zmiennej statycznej, używając defunwewnątrz letz leksykalnym wiązaniem do utworzenia zamknięcia. Jednak podczas kompilacji bajtowej pliku pojawia się ostrzeżenie. Czy robię coś złego, a jeśli nie, czy istnieje sposób na stłumienie tego ostrzeżenia? Stworzyłem MCVE: ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () (interactive) (setq …

1
Jakie są potencjalne pułapki włączenia wiązania leksykalnego dla bufora?
Zostało to zainspirowane dyskusją na temat wiązania leksykalnego a leksykalno-letniego w tym pytaniu . Jak leksykalno-wiązanie daje możliwość posiadania użytecznych closures ludzie mogą być wykorzystane w innych językach takich jak JavaScript, dlaczego nie włączono go cały czas? Zakładając, że wsteczna kompatybilność ze starszą wersją Emacsena nie stanowi problemu, jakich pułapek …

1
Radzenie sobie z „Ostrzeżenie: przypisanie do zmiennej swobodnej”, gdy pewne biblioteki mogą być projektowane
Kompilacja bajtowa mojego trybu: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) daje ostrzeżenie: Warning: assignment to free variable `er/try-expand-list' Jest to normalna sytuacja, ponieważ er/try-expand-listjest zdefiniowana w externa; biblioteka, expand-regionktóra znajduje się na stronie http://elpa.gnu.org Mój tryb rejestruje rozszerzenie do expand-regionbiblioteki, ale można uruchomić mój …

1
Jak określa się zakres zmiennych dla makr?
Weźmy następujące makro przykładowe, zdefiniowane w macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) I przyjąć następującą funkcję zdefiniowaną w innym pliku , function.el. (defun some-function () (some-macro (do-something))) Kiedy function.elzostanie skompilowany bajtowo, zostanie some-variablepowiązany w powiązaniu leksykalnym lub dynamicznym? Rozumiem, że zależy to od tego, czy plik używa …

3
Dlaczego określanie zakresu defvar działa inaczej bez wartości początkowej?
Załóżmy, że mam plik o nazwie 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 Ładuję ten plik, a następnie przechodzę do bufora …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.