[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
lexical and dynamic binding
From: |
Ikumi Keita |
Subject: |
lexical and dynamic binding |
Date: |
Thu, 28 Oct 2021 15:08:55 +0900 |
Hi Arash and Tassilo,
>>>>> Arash Esbati <arash@gnu.org> writes:
>>> ,----[ C-h f symbol-value RET ]
>>> | symbol-value is a built-in function in ‘C source code’.
>>> |
>>> | (symbol-value SYMBOL)
>>> |
>>> | Return SYMBOL’s value. Error if that is void.
>>> | Note that if ‘lexical-binding’ is in effect, this returns the
>>> | global value outside of any lexical scope.
>>> `----
>>
>> Hm, I don't really understand that sentence.
> I had a specific picture in my mind where that last sentence might
> apply, but after taking your examples and playing with them, I see that
> I was wrong. Hence, I admit I don't understand that last sentence
> either.
My understanding of the last sentence is as follows:
----------------------------------------------------------------------
(setq foo 1) ; dynamic binding without defvar.
(defun bar (var)
(symbol-value var))
(defun xyz ()
(let ((foo foo))
(setq foo (1+ foo))
(bar 'foo)))
(xyz) ; => 1
foo ; => 1
(special-variable-p 'foo) ; => nil
----------------------------------------------------------------------
If I understand correctly, this example shows that
1. `setq' on foo without `defvar' creates dynamic binding, but doesn't
mark it as special.
2. Since foo isn't special, `let' in the function xyz creats lexical
binding, not dynamic binding.
3. `setq' in xyz changes its lexical value, not dynamic value.
4. `symbol-value' in the function bar accesses its dynamically
bound value, so it returns 1, not 2.
5. After the execution of xyz, let binding disappears and the original
dynamic value of 1 appears as the value of foo.
The sentence of
,----
| Note that if ‘lexical-binding’ is in effect, this returns the
| global value outside of any lexical scope.
`----
refers to the item 4 above.
Regards,
Ikumi Keita
- Extending TeX-read-key-val, Arash Esbati, 2021/10/22
- Re: Extending TeX-read-key-val, Ikumi Keita, 2021/10/23
- Re: Extending TeX-read-key-val, Arash Esbati, 2021/10/24
- Re: Extending TeX-read-key-val, Tassilo Horn, 2021/10/24
- Re: Extending TeX-read-key-val, Arash Esbati, 2021/10/27
- Re: Extending TeX-read-key-val, Tassilo Horn, 2021/10/28
- lexical and dynamic binding,
Ikumi Keita <=
- Re: lexical and dynamic binding, Tassilo Horn, 2021/10/28
- Re: lexical and dynamic binding, Ikumi Keita, 2021/10/28
- Re: lexical and dynamic binding, Arash Esbati, 2021/10/28
- Re: Extending TeX-read-key-val, Ikumi Keita, 2021/10/25