[iterate-devel] value of the top-level restriction?
Hoehle, Joerg-Cyril
Joerg-Cyril.Hoehle at t-systems.com
Mon Nov 15 16:51:09 UTC 2004
Hi,
why are some forms restricted to top-level, while others are not?
For example, the following looks like a good replacement of FOR IN which is not restricted to top-level iteration:
(iter (repeat 5)
(let () ; not at top-level
(with l = '(1 2 3))
(for el do-next (if (null l) (terminate) (dsetq el (pop l))))
(princ (cons "hi" el))))
(hi . 1)(hi . 2)(hi . 3)
This could be wrapped via iterate:defxyz and even be used as a generator.
Likewise, the in-whole-vector example in the manual IMHO provides a better iterator than the built-in IN-VECTOR: it is not restricted to top-level -- it uses FOR DO-NEXT.
(iterate(repeat 5)(let()(for x in-vector #(1 2 3))(princ x)))
Iterate, in (FOR X IN-VECTOR #(1 2 3)):
Clause can occur only at top-level
[Condition of type SIMPLE-ERROR]
Does anybody know the reason of the top-level check?
Is it a kind of user safeguard?
Should the meaning of "TOP-LEVEL" in Iterate be redefined?
Regards,
Jörg Höhle.
More information about the iterate-devel
mailing list