La construcción do también se usa para realizar iteraciones usando LISP. Proporciona una forma estructurada de iteración.
La sintaxis de la declaración do -
(do ((variable1 value1 updated-value1)
(variable2 value2 updated-value2)
(variable3 value3 updated-value3)
...)
(test return-value)
(s-expressions)
)
Los valores iniciales de cada variable se evalúan y se vinculan a la variable respectiva. El valor actualizado en cada cláusula corresponde a una declaración de actualización opcional que especifica cómo se actualizarán los valores de las variables con cada iteración.
Después de cada iteración, se evalúa la prueba y, si devuelve un valor no nulo o verdadero, se evalúa y devuelve el valor de retorno.
Las últimas expresiones-s son opcionales. Si están presentes, se ejecutan después de cada iteración, hasta que el valor de prueba devuelve verdadero.
Ejemplo
Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él:
(do ((x 0 (+ 2 x))
(y 20 ( - y 2)))
((= x y)(- x y))
(format t "~% x = ~d y = ~d" x y)
)
Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:
x = 0 y = 20
x = 2 y = 18
x = 4 y = 16
x = 6 y = 14
x = 8 y = 12