I tested two similar generators, and the result confused me.
This iterator yields values as I expected:
ELISP> (iter-defun f (x) (setq x (iter-yield (1+ x))) (setq x (iter-yield (* 2 x)))) f ELISP> (progn (setq x (f 1)) `(,(iter-next x) ,(iter-next x 3))) (2 6)
But this one yields a different value:
ELISP> (iter-defun g (x) (setq x (iter-yield (1+ x)) x (iter-yield (* 2 x)))) g ELISP> (progn (setq x (g 1)) `(,(iter-next x) ,(iter-next x 3))) (2 2)
The above two generators are very similar,
but why are the values yielded by their iterators different?