If you extend the `catch` matching to compound values this isn’t even that bad.
let fizzbuzz = func(fizzbuzz, x, max) {
try {
hurl [x % 3, x % 5];
}
catch ([ true, true]) { print("FizzBuzz"); }
catch ([false, true]) { print("Buzz"); }
catch ([ true, false]) { print("Fizz"); }
catch ([false, false]) { print(x); }
try { hurl x; }
catch (max) {}
catch (x) {
fizzbuzz(fizzbuzz, x + 1, max);
}
}