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)