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.