Loops
orbit controls iteration in AbySS. Pair it with resume and eject for fine-grained flow.
Simple Range
Section titled “Simple Range”orbit (i = 0..5) { unveil(i);}0..5 is half-open; swap in ..= for inclusive bounds.
orbit (i = 0..=10) { unveil(i);}Infinite Orbit
Section titled “Infinite Orbit”Omit bounds to loop forever and break with eject.
forge morph i: arcana = 0;orbit { oracle (i == 100) { (boon) => eject; // break }; i += 1;};Multiple Induction Variables
Section titled “Multiple Induction Variables”orbit (i = 0..3, j = 0..3) { unveil(i, " ", j);}Flow Control
Section titled “Flow Control”resume <loop-var>skips to the next iteration of the named loop.eject <loop-var>breaks out of the specified loop.
orbit (i = 0..3) { orbit (j = 0..3) { oracle (i == j) { (boon) => resume j; }; unveil(i, " ", j); }}orbit (i = 0..3) { orbit (j = 0..3) { unveil(i, " ", j); oracle (i == 2) { (boon) => eject i; }; }}resume and eject understand nesting, so you maintain readable flow even in complex rituals.