do
La función do en Scheme es un bucle con inicialización, actualización y condición de terminación. Útil para ejecutar una secuencia un número de veces o hasta cumplir una condición.
La forma general de do:
(do ((var1 init1 update1)
(var2 init2 update2)
(var3 init3 update3))
(termination-condition result)
body)- Variable: variable(s) del bucle.
- Valor inicial: valor inicial.
- Expresión de actualización: actualización por iteración.
- Condición de terminación: condición de parada.
- Expresión de resultado: valor al terminar.
- Body: código por iteración.
Ejemplo: suma del 1 al 5
(do ((i 1 (+ i 1)) ; Inicializar i en 1, incrementar en 1
(sum 0 (+ sum i))) ; Inicializar suma en 0, añadir i a la suma
((> i 5) sum) ; Terminar cuando i > 5, devolver sum
(lumi-message (number->string sum))) ; Imprime la suma en cada pasoiempieza en 1 e incrementa.sumacumula la suma.- Parada cuando
i > 5, retorno desum.
Salida: 15
Cómo funciona
- Inicialización: valores iniciales.
- Comprobación de parada: al inicio de cada vuelta.
- Iteración: ejecutar cuerpo, actualizar variables.
Resumen
doofrece bucles flexibles con varias variables.- Útil cuando el estado cambia en cada vuelta.
- La condición de parada fija el fin y el resultado.
do combina enlaces (como let) y control iterativo.