齊藤敦志
Posted on November 19, 2017
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.
💖 💪 🙅 🚩
齊藤敦志
Posted on November 19, 2017
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.