[iterate-devel] destructively altering elements
Hoehle, Joerg-Cyril
Joerg-Cyril.Hoehle at t-systems.com
Wed Jun 27 14:11:36 UTC 2007
Hi again,
Albert Krewinkel wrote:
>> (for e in-matrix foo with-indices (i j))
>That sure is a good way to do this. Maybe you are right, and the
>python zen "explizit is better than implicit" applies to this
>situation as well. But I just feel like it's more verbose than
>necessary.
To me it seems like "Iterate zen". Otherwise you are with things like
Series. Actually, naming things simplifies (or make possible) some
complex loops.
> (iter (for el in-vector v with-index i)
> (setf (aref v i) 1))
>the expansion code will contain (setq el (aref...)).
The Iterate zen is for i index-of-vector. See manual.
That would not invoke aref.
The careful reader of the manual might expect
(for nil in-vector ... with-index i) to avoid aref given a clever
implementation, however Iterate is not Loop, so that construct does not
work (yet?) with Iterate.
BTW, do users consider this a bug?
(iter (for nil in-vector "abc") (counting t)) => error
(loop for nil across "abc" count t) => 3
(loop for nil in '(1 2 3) count t) => 3 etc.
However
(iter (for nil in-package "CL" :external-only t) (counting t)) => 978
probably as a hazard of the implementation.
>It's a quick hack and for testing only
> (ecase row-or-column
> ((or column col)
> ('row
Your code may appear to work for you, but your case expression is subtly
broken.
Please try
(for el in-vector v by OR)
(for el in-vector v by QUOTE)
Regards,
Jorg Hohle.
More information about the iterate-devel
mailing list