[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27674: 26.0.50; cl-progv: strange scoping due to implementation
From: |
Michael Heerdegen |
Subject: |
bug#27674: 26.0.50; cl-progv: strange scoping due to implementation |
Date: |
Thu, 13 Jul 2017 03:11:37 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
npostavs@users.sourceforge.net writes:
> Michael Heerdegen <michael_heerdegen@web.de> writes:
>
> > Sure, but that's something different. I didn't want a special variable
> > in my example. The doc of `cl-progv' doesn't mention that the symbols
> > must correspond to special variables. Do I miss something?
>
> Oh, you expect cl-progv to bind lexically?
Eh - no. Maybe I have a wrong mental model. I thought that the free
variable `x' in the lambda is (also) in the scope of the dynamical
binding created by `progv', and because that binding is established
inside the `let' establishing the lexical binding of `x', it would
shadow the lexical binding.
Why does the lambda still refer to the lexical binding?
FWIW I see that this example shows the same behavior:
#+begin_src emacs-lisp
(setq x 'foo)
(let ((x 0))
(cl-letf (((symbol-value 'x) 1))
(funcall (lambda () x))))
#+end_src
==> 0
Does a lexical binding always beat a dynamical one?
Michael.
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Michael Heerdegen, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, npostavs, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Michael Heerdegen, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, npostavs, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation,
Michael Heerdegen <=
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, npostavs, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Michael Heerdegen, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, npostavs, 2017/07/12
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Roland Winkler, 2017/07/13
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Noam Postavsky, 2017/07/13
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Michael Heerdegen, 2017/07/14
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Roland Winkler, 2017/07/15
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Michael Heerdegen, 2017/07/14
- bug#27674: 26.0.50; cl-progv: strange scoping due to implementation, Stefan Monnier, 2017/07/19