all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#6583: 23.2; cl loop macro with `and' clause
@ 2010-07-07 23:33 Kevin Ryde
  2010-07-08  7:40 ` Thierry Volpiatto
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Kevin Ryde @ 2010-07-07 23:33 UTC (permalink / raw)
  To: 6583

Evaluating

    (require 'cl)
    (loop for elem in '(1 2 3)
          for k = elem and j = 99
          do
          (print k))

shows

    1
    1
    2

where I thought it might be

    1
    2
    3

I'm don't know much about the cl loop macro but thought the `for k' step
would be evaluated after the `for elem' step, "sequential" per the cl
info manual near the end of "For Clauses"

    If you include several `for' clauses in a row, they are treated
    sequentially

The 1,2,3 is what you get from pasting the same form into clisp, if that
suggests what an actual common lisp does or should do.  And in Emacs
it's had if you omit the "and j",

    (loop for elem in '(1 2 3)
          for k = elem
          do
          (print k))
    =>
    1 2 3

Nosing around the macro expansion I wondered if the "step" of k/j gets
mispositioned if there's an `and', but it's hard to be sure.


I struck this when making a loop over an alist where I thought to take
apart the key and value with an `and' as they didn't need to be
sequential,

    (loop for elem in my-alist
          for k = (car elem) and v = (cdr elem)
          do
          ...

Alas the effect of the "1 1 2" was to double the first element and omit
the last.


In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-05-16 on raven, modified by Debian
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-09-14 13:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-07 23:33 bug#6583: 23.2; cl loop macro with `and' clause Kevin Ryde
2010-07-08  7:40 ` Thierry Volpiatto
2010-07-08  8:28 ` Lawrence Mitchell
2016-06-02 22:06 ` Noam Postavsky
2017-06-10 19:10 ` Alex
2017-06-25  0:22   ` npostavs
2017-06-25  3:03     ` Alex
2020-09-14 13:10       ` Lars Ingebrigtsen

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.