SYSTEM DESCRIPTION >
Iterate version: latest from darcs repository and 1.4.3
Lisp implementation: SBCL 1.0.33
BUG DESCRIPTION>
when using FOR..IN-HASHTABLE the code generated for hash-table
traversing is always put at the beginning of generate code, with the
result that the hash-table to be traversed must be in scope since the
beginning of the ITER form.
EXAMPLE >
(macroexpand-1 '(iter:iter
(iter:with table = (make-hash-table))
(iter:for (k v) in-hashtable table)
(format t "~A ~A ~%" k v)))
==>
(WITH-HASH-TABLE-ITERATOR (#:HASH-TABLE-ITERATOR-810 TABLE) ; <--
'TABLE used before being bound
(LET* ((TABLE (MAKE-HASH-TABLE)) (#:G811 NIL) (K NIL) (V NIL))
(BLOCK NIL
(TAGBODY
(PROGN)
LOOP-TOP-NIL
(PROGN
(MULTIPLE-VALUE-SETQ (#:G811 K V) (#:HASH-TABLE-ITERATOR-810))
(IF (NOT #:G811)
(GO LOOP-END-NIL))
(FORMAT T "~A ~A ~%" K V))
(PROGN)
(GO LOOP-TOP-NIL)
LOOP-END-NIL
(PROGN))
NIL)))
thank you,
Andrea