module main fn main() { try_propagation() or { println('captured: ${err}') } } fn try_propagation() ! { try_numbers()! } fn try_numbers() ! { for x in 1 .. 10 { y := error_if_even(x) or { x + 1 } println('${x} rounded to ${y}') error_if_prime(y)! } } fn error_if_even(num int) !int { if num % 2 == 0 { return error('number is even') } return num } fn error_if_prime(num int) !int { for i in 2 .. num { if num % i == 0 { return error('${num} is prime') } } return num }