* Re: [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings
[not found] ` <20170216014308.12DC326007@vcs0.savannah.gnu.org>
@ 2017-02-16 13:32 ` Stefan Monnier
2017-02-17 4:44 ` Mark Oteiza
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2017-02-16 13:32 UTC (permalink / raw)
To: emacs-devel; +Cc: Mark Oteiza
> + (if vars
> + `(let ,(mapcar (lambda (b) (list (car b) (cdr b))) vars)
> + ,@code)
> + `(progn ,@code)))
Just curious here:
I resisted the temptation to do that when working on that code because
I thought that it should (both in the sense that I expect the current
code to behave that way, and in the sense that if it doesn't behave that
way, we should fix it) make no difference to the byte-code we generate.
So, I'm wondering if you've found a concrete case where it makes
a difference, or it's just that you wanted the output to look
more pretty.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings
2017-02-16 13:32 ` [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings Stefan Monnier
@ 2017-02-17 4:44 ` Mark Oteiza
2017-02-18 0:05 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: Mark Oteiza @ 2017-02-17 4:44 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> + (if vars
>> + `(let ,(mapcar (lambda (b) (list (car b) (cdr b))) vars)
>> + ,@code)
>> + `(progn ,@code)))
>
> Just curious here:
>
> I resisted the temptation to do that when working on that code because
> I thought that it should (both in the sense that I expect the current
> code to behave that way, and in the sense that if it doesn't behave that
> way, we should fix it) make no difference to the byte-code we generate.
>
> So, I'm wondering if you've found a concrete case where it makes
> a difference, or it's just that you wanted the output to look
> more pretty.
Nope, AFAICT the bytecode remains the same.
In the past I noticed that pcase expanded things to (let nil ...), which
I think is a bit annoying wrt readability, yes; however just recently I
was poking at elint.el, which complains about such forms with
Empty varlist in let: (let nil <snip>)
so I was more inclined to change it.
Between vars possibly being expensive, and--one step beyond that--using an
uninterned symbol to ameliorate evalling vars twice incurring a cost
with dynamic binding, I suppose this change was short sighted.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings
2017-02-17 4:44 ` Mark Oteiza
@ 2017-02-18 0:05 ` Stefan Monnier
2017-02-18 0:10 ` Mark Oteiza
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2017-02-18 0:05 UTC (permalink / raw)
To: Mark Oteiza; +Cc: emacs-devel
> In the past I noticed that pcase expanded things to (let nil ...), which
> I think is a bit annoying wrt readability, yes; however just recently I
> was poking at elint.el, which complains about such forms with
>
> Empty varlist in let: (let nil <snip>)
>
> so I was more inclined to change it.
OK, thanks.
> Between vars possibly being expensive, and--one step beyond that--using an
> uninterned symbol to ameliorate evalling vars twice incurring a cost
> with dynamic binding, I suppose this change was short sighted.
Sorry, I didn't understand this part of your message.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings
2017-02-18 0:05 ` Stefan Monnier
@ 2017-02-18 0:10 ` Mark Oteiza
0 siblings, 0 replies; 4+ messages in thread
From: Mark Oteiza @ 2017-02-18 0:10 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
On 17/02/17 at 07:05pm, Stefan Monnier wrote:
> > In the past I noticed that pcase expanded things to (let nil ...), which
> > I think is a bit annoying wrt readability, yes; however just recently I
> > was poking at elint.el, which complains about such forms with
> >
> > Empty varlist in let: (let nil <snip>)
> >
> > so I was more inclined to change it.
>
> OK, thanks.
>
> > Between vars possibly being expensive, and--one step beyond that--using an
> > uninterned symbol to ameliorate evalling vars twice incurring a cost
> > with dynamic binding, I suppose this change was short sighted.
>
> Sorry, I didn't understand this part of your message.
I was pondering not sending the last part because I was suddenly getting
really tired. As long as the change is okay I guess it doesn't matter.
Woops.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-02-18 0:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20170216014306.20854.5128@vcs0.savannah.gnu.org>
[not found] ` <20170216014308.12DC326007@vcs0.savannah.gnu.org>
2017-02-16 13:32 ` [Emacs-diffs] master 1b4442b: Don't expand body inside a let-binding when there are no bindings Stefan Monnier
2017-02-17 4:44 ` Mark Oteiza
2017-02-18 0:05 ` Stefan Monnier
2017-02-18 0:10 ` Mark Oteiza
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.