Hi,
although I might become an iterate developer one day, I dont really
feel yet in the position to comment on the possible problems.
I just wanted to add that yesterday, I was stumbling about exactly
the same problematic.
If there is some code to be tested etc I would be interested.
Cheers,
Kilian
Am 14.06.2007 um 14:24 schrieb Bruno Daniel:
Dear developers,
the following example shows that iter initializes
sequence variables twice, once with 0 and once with
the start of the range minus 1.
(macroexpand-1 '(iter (for i below 10)
(print i)))
-->
(LET* ((I 0))
(DECLARE (TYPE NUMBER I))
(BLOCK NIL
(TAGBODY
(SETQ I -1)
LOOP-TOP-NIL
(SETQ I (+ I 1))
(IF (>= I 10) (GO LOOP-END-NIL))
(PRINT I)
(GO LOOP-TOP-NIL)
LOOP-END-NIL)
NIL))
The problem with this is not that this is a little bit
ugly but that one must allow negative values in declarations
for the driver variable, which conflicts with (unsigned-byte 32)
declarations.
Could I write a new driver instead of for that fixes the
problem or will I run into trouble because someteimes one of the
initial values is needed for something else (the else clause,
first-time-p or initially?).
Moreover, the declaration is not very tight. dotimes does better
on SBCL:
(macroexpand-1 '(dotimes (i 10)
(print i)))
-->
(DO ((I 0 (1+ I)))
((>= I 10) NIL)
(DECLARE (TYPE UNSIGNED-BYTE I))
(PRINT I))
Best regards
Bruno Daniel
_______________________________________________
iterate-devel site list
iterate-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/iterate-devel
_______________________________________________
iterate-devel site list
iterate-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/iterate-devel