Common Lisp has do
syntax. And Scheme too.
They have same form, but different semantic.
;; Common Lisp
(do ((i 0 (+ i 1))
(j '() (cons (lambda()i) j)))
((= i 3)
(mapcar (lambda(x)(funcall x)) j)))
;; → (3 3 3)
;; Scheme
(do ((i 0 (+ i 1))
(j '() (cons (lambda()i) j)))
((= i 3)
(map (lambda(x)(x)) j)))
;; → (2 1 0)
Scheme's do
make a new location every time for each loop. Common Lisp is not so.
Top comments (0)