I have a little problem to understand do in lisp
I have this code :
(defun iota-b (n)
(do ((x 0 (+1 x))
(u '() (cons x u)))
((> x n) (nreverse u))))
(iota-b 5)
(0 1 2 3 4 5)
In documentation there is the "do" basic template is:
(do (variable-definitions*)
(end-test-form result-form*)
statement*)
I really don't understand where is my body in my function iota-b For me it's
(u '() (cons x u)))
apparently not, why we put (u '() (cons x u))) in the variable-definitions ?
You have the variable definitions of the form
var init [step]
this increments
x
in every iteration and builds with(cons x u)
theu
list as(5 4 3 2 1 0)
.The end test
The result form
reverses the list
(5 4 3 2 1 0)
to the given result.And then you have an empty body.
You can of course modify the do loop to
this will give the same result.