HAZ.HASTAlista_de_instruccioneslista_de_pruebaDO.UNTILlista_de_instruccioneslista_de_prueba
Ejecuta repetidamente la lista_de_instrucciones mientras que lista_de_prueba evalúa a FALSO.
HAZ.HASTA evalúa lista_de_instrucciones antes de evaluar lista_de_prueba, así que siempre se ejecuta lista_de_instrucciones al menos una vez.
El argumento lista_de_prueba debe contener una expresión que evalúa a CIERTO o FALSO.
El hecho de que el argumento lista_de_prueba es una lista pueda engañar porque debería contener exactamente una expresión.
Sólo es una lista para aplazar cuando se lo evalúa.
Por ser una lista, se necesita evaluarlo explícitamente con EJECUTA.
Esto permite que HAZ.HASTA reevalúa lista_de_prueba después de cada iteración, en lugar de sólo una vez.
HAZ "i 0
HAZ.HASTA [HAZ "i :i+1 ESCRIBE :i] [:i > 3]
1
2
3
4