DL
Size: a a a
DL
VL
VL
VL
DL
VL
VL
VL
DL
VL
VL
DL
VL
DL
PG
CL-USER> (let ((x 0)) (set 'x 1) x)
0
CL-USER> (declaim (special y))
(Y)
CL-USER> (let ((y 0)) (set 'y 1) y)
1
CL-USER> (let ((z 0)) (declare (special z)) (set 'z 1) z)
1
ELISP> (setq lexical-binding t)
t
ELISP> (let ((w 0)) (setq w 1) w)
1 (#o1, #x1, ?\C-a)
ELISP> (let ((x 0)) (set 'x 1) x)
0 (#o0, #x0, ?\C-@)
ELISP> (setq lexical-binding nil)
nil
ELISP> (let ((y 0)) (set 'y 1) y)
1 (#o1, #x1, ?\C-a)
(declare special)
в Elisp нету.set
'ом, но это значит, надо оборачивать в let lexical-binding
, и становится хуже; в итоге приходится setq
.lexical-binding
имеет такой эффект.S
PG
T
T
VL