Slide 11 de 37

Result<T, E>

func half(n: Int): Result<Int, Str> {
	if n % 2 == 0 { return Result.Ok(n / 2) }
	return Result.Error("não é par")
}

proc main(): void {
	if half(4) is Result.Ok(v)      { echo v }
	else if half(4) is Result.Error(why) { echo why }
}
Result é a única união genérica nativa da linguagem, e é como toda operação falível se reporta: Result.Ok(valor) ou Result.Error(carga). Combinar as duas variantes com `is` é exaustivo, o que permite que uma função escrita sobre um Result dispense por completo um else morto.