[fine] While loops, nothing

This commit is contained in:
John Doty 2024-02-05 06:11:37 -08:00
parent 1cc5ce6ca9
commit ac3c158a81
7 changed files with 166 additions and 48 deletions

View file

@ -46,7 +46,7 @@ fun attack(weapon: MeleeWeapon or RangedWeapon, monster: Monster, distance: f64)
// from the `is` binding in scope.
if weapon is MeleeWeapon and distance > 1 or
weapon is w : RangedWeapon and (distance < w.minRange or distance > w.maxRange) {
print("You are out of range")
print("You are out of range");
return
}
@ -72,7 +72,7 @@ fun attack(weapon: MeleeWeapon or RangedWeapon, monster: Monster, distance: f64)
}
}
fun more_examples(weapon: MeleeWeapon or RangedWeapon) -> f64 or () {
fun more_examples(weapon: MeleeWeapon or RangedWeapon) -> f64 or nothing {
if weapon is w: RangedWeapon and w.maxRange > 10 {
// w is still in scope here; the `and` is bound into a predicate expression
// and breaks exhaustivity
@ -115,7 +115,7 @@ fun test() -> f64 {
// Unroll by hand...
let it = new Iterator { current: 0 };
loop {
while true {
if it.next() is v: f64 {
sum = sum + v;
} else {