[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: |
Fri, 14 Jul 2017 16:20:04 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Noam Postavsky <npostavs@users.sourceforge.net> writes:
> > The docstring of cl-progv says
> >
> > Bind SYMBOLS to VALUES dynamically in BODY.
> >
> > But I am not sure whether this statement correctly reflects the actual
> > code of cl-progv: cl-progv evaluates a let form at runtime, but it is
> > not up to cl-progv to ensure dynamical binding. I believe it
> > depends on
> > whether lexical binding is on or off whether the code currently used by
> > cl-progv uses dynamical binding or lexical binding.
>
> No, because cl-progv omits the second argument to `eval', which is the
> same as passing nil. This guarantees the evaluated let-bindings are
> dynamic bindings.
Yes. The second part of the answer is the creation of BODYFUN outside
of `eval': it ensures that free variables in the BODY refer to the outer
lexical environment regardless of `eval' being without performed with
lexical binding off.
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, 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, 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 <=
- 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