help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Understanding dotimes skipping by 2


From: Tim Johnson
Subject: Re: Understanding dotimes skipping by 2
Date: Thu, 27 Sep 2018 15:32:07 -0800
User-agent: Mutt/1.10.0 (2018-05-17)

* Marco Wahl <marcowahlsoft@gmail.com> [180927 15:16]:
> Tim Johnson <tim@akwebsoft.com> writes:
> 
> > the following code snippet is as follows:
> > (setq l `(1 2 3 4 5 6 7 8 9 0))
> 
> > ;; iterate through a list two elements at a time
> > (let ((x 0))
> >   (dotimes (/ (length l) 2)
> >     (progn
> >       (insert (format "%s %s, " (nth x l) (nth (+ x 1) l)))
> >       (setq x (+ x 2)))))
> >
> > ;; and below are the results
> > 1 2, 3 4, 5 6, 7 8, 9 0, nil nil, nil nil, nil nil, nil nil, nil nil, 2
> >
> > I'm confused about the output (nil etc...)which follow the expected 
> > numbers. 
> > could someone explain?
> > P.S. I get the same output without the `progn form
> 
> Looks like "/" is a variable which gets bound to the values of 0 up to
> (length l) and the result of the loop is 2.
> 
> It's in the documentation (C-h f dotimes).
  You've revealed that I have a syntax error in the code above.
  `/ was being treated as a variable
  I needed an outer parens for the arguments and needed to add a
  count variable.
    ;; 
    (dotimes (count (/ (length l) 2)) ;; what I'm after (I think)
> HTH
  Thanks, helpful indeed
-- 
Tim Johnson
http://www.tj49.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]