LISP - Do Construct

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