Preguntas etiquetadas con lexical-scoping

3
¿Por qué es 'let' más rápido con alcance léxico?
Mientras leía el código fuente de la dolistmacro, me encontré con el siguiente comentario. ;; Esta no es una prueba confiable, pero no importa porque ambas semánticas son aceptables, una es ligeramente más rápida con alcance dinámico y la otra es ligeramente más rápida (y tiene una semántica más limpia) …


3
Defun inside let con enlace léxico da una advertencia de compilación de bytes "no se sabe que la función esté definida"
Quiero obtener el efecto de una variable estática usando defundentro de un letenlace léxico para crear un cierre. Sin embargo, al compilar byte el archivo, recibo una advertencia. ¿Estoy haciendo algo mal, o si no, hay alguna forma de suprimir esta advertencia? He creado un MCVE: ;; -*- lexical-binding: t …


1
Tratar con "Advertencia: asignación a variable libre" cuando ciertas bibliotecas pueden faltar por diseño
Compilación de bytes de mi modo: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) da advertencia: Warning: assignment to free variable `er/try-expand-list' Esta es una situación normal porque er/try-expand-listse define en externo; biblioteca expand-regionque está en http://elpa.gnu.org Mi extensión de registro de modo a la expand-regionbiblioteca, …

1
¿Cómo se determina el alcance variable para macros?
Tome el siguiente ejemplo de macro, definido en macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) Y tomar la siguiente función, definida en un archivo diferente , function.el. (defun some-function () (some-macro (do-something))) Cuando function.else compila byte, ¿ some-variablese vinculará bajo enlace léxico o dinámico? Entiendo que esto depende …

3
¿Por qué el alcance de defvar funciona de manera diferente sin un valor init?
Supongamos que tengo un archivo llamado que elisp-defvar-test.elcontiene: ;;; 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 Cargo este archivo y luego entro en …

2
'El valor del símbolo como variable es nulo' en la devolución de llamada de url-retrieve
Al ejecutar lo siguiente me sale un error: (defun caller (func) (url-retrieve "http://m0smith.freeshell.org/" (lambda (status) (funcall func)))) (caller (lambda() (message "called"))) Resultado: error in process filter: Symbol's value as variable is void: func ¿Cuál es la mejor manera de resolver este problema? Básicamente, necesito aceptar una devolución de llamada de …
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.