* Re: [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree
[not found] ` <E1Y22th-0001CI-3B@vcs.savannah.gnu.org>
@ 2014-12-19 21:48 ` Stefan Monnier
2014-12-21 20:23 ` João Távora
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2014-12-19 21:48 UTC (permalink / raw
To: emacs-devel; +Cc: João Távora
> + (mapc #'(lambda (w)
> + (with-selected-window w
> + (darkroom--set-margins)))
> + (get-buffer-window-list (current-buffer))))
I recommend the use of `dolist' instead of `mapc' when the body of the
loop is provided by an anonymous function and we're looping over a list.
If the compiler could tell that we're looping over a list, it could
auto-transform the mapc call into a dolist (which is slightly more
efficient), but having to expend it to a loop that handles both lists
and arrays (like `mapc' does) makes the resulting code no more efficient
than just using `mapc'.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree
2014-12-19 21:48 ` [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree Stefan Monnier
@ 2014-12-21 20:23 ` João Távora
2014-12-22 3:04 ` Stefan Monnier
0 siblings, 1 reply; 4+ messages in thread
From: João Távora @ 2014-12-21 20:23 UTC (permalink / raw
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> + (mapc #'(lambda (w)
>> + (with-selected-window w
>> + (darkroom--set-margins)))
>> + (get-buffer-window-list (current-buffer))))
>
> I recommend the use of `dolist' instead of `mapc' when the body of the
> loop is provided by an anonymous function and we're looping over a list.
>
> If the compiler could tell that we're looping over a list, it could
> auto-transform the mapc call into a dolist (which is slightly more
> efficient), but having to expend it to a loop that handles both lists
> and arrays (like `mapc' does) makes the resulting code no more efficient
> than just using `mapc'.
>
Alright, makes sense. What if I use `(cl-loop for w in ...list...)`
which is my preferred cl-idiom anyway?
João
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree
2014-12-21 20:23 ` João Távora
@ 2014-12-22 3:04 ` Stefan Monnier
2014-12-22 8:51 ` João Távora
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2014-12-22 3:04 UTC (permalink / raw
To: João Távora; +Cc: emacs-devel
>>> + (mapc #'(lambda (w)
>>> + (with-selected-window w
>>> + (darkroom--set-margins)))
>>> + (get-buffer-window-list (current-buffer))))
>>
>> I recommend the use of `dolist' instead of `mapc' when the body of the
>> loop is provided by an anonymous function and we're looping over a list.
>>
>> If the compiler could tell that we're looping over a list, it could
>> auto-transform the mapc call into a dolist (which is slightly more
>> efficient), but having to expend it to a loop that handles both lists
>> and arrays (like `mapc' does) makes the resulting code no more efficient
>> than just using `mapc'.
>>
> Alright, makes sense. What if I use `(cl-loop for w in ...list...)`
> which is my preferred cl-idiom anyway?
Use whichever you prefer. I was just pointing out the style I tend
to prefer, partly for efficiency reasons (and also because I haven't
managed to plug that efficiency problem in the optimizer).
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree
2014-12-22 3:04 ` Stefan Monnier
@ 2014-12-22 8:51 ` João Távora
0 siblings, 0 replies; 4+ messages in thread
From: João Távora @ 2014-12-22 8:51 UTC (permalink / raw
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>>> + (mapc #'(lambda (w)
>>>> + (with-selected-window w
>>>> + (darkroom--set-margins)))
>>>> + (get-buffer-window-list (current-buffer))))
>>>
>>> I recommend the use of `dolist' instead of `mapc' when the body of the
>>> loop is provided by an anonymous function and we're looping over a list.
>>>
>>> If the compiler could tell that we're looping over a list, it could
>>> auto-transform the mapc call into a dolist (which is slightly more
>>> efficient), but having to expend it to a loop that handles both lists
>>> and arrays (like `mapc' does) makes the resulting code no more efficient
>>> than just using `mapc'.
>>>
>> Alright, makes sense. What if I use `(cl-loop for w in ...list...)`
>> which is my preferred cl-idiom anyway?
>
> Use whichever you prefer. I was just pointing out the style I tend
> to prefer, partly for efficiency reasons (and also because I haven't
> managed to plug that efficiency problem in the optimizer).
Yes, the idea came across. When it isn't "outsmarting" or premature,
it's useful to use idioms that will probably help the compiler. To use
mapc for lists in this context, all one could do is wait for some kind
type inference engine, which is probably in a more distant future.
João
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-12-22 8:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20141219190721.4296.62862@vcs.savannah.gnu.org>
[not found] ` <E1Y22th-0001CI-3B@vcs.savannah.gnu.org>
2014-12-19 21:48 ` [elpa] master 96e61a9 26/26: Add packages/darkroom by merging its upstream subtree Stefan Monnier
2014-12-21 20:23 ` João Távora
2014-12-22 3:04 ` Stefan Monnier
2014-12-22 8:51 ` João Távora
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.