Manejo de errores: Resultado y Opcion

Forja adopta el patrón de Resultado para operaciones que pueden fallar, y Opcion para valores que pueden estar ausentes. Ambas son variantes de tipos algebraicos definidos en el preludio.

Opcion

Úsalo cuando un valor pueda ser Algun(valor) o Ninguno. Evita el uso de nulo y fuerza el manejo explícito del caso ausente.

📦 Definición
tipo Opcion<T> = Algun(T) | Ninguno
🧪 Ejemplo
funcion primer_caracter(texto: Texto) → Opcion<Texto> {
    si (texto == "") {
        retornar Ninguno
    }
    retornar Algun(texto[0])
}

variable r = primer_caracter("forja")

coincidir (r) {
    caso Algun(c) → escribir("Primer letra: " + c)
    caso Ninguno → escribir("Vacío")
}

Resultado

Úsalo para operaciones que pueden devolver Exito(valor) o Error(mensaje).

📦 Definición
tipo Resultado<T, E> = Exito(T) | Error(E)
🧪 Ejemplo
funcion dividir(a: Entero, b: Entero) → Resultado<Entero, Texto> {
    si (b == 0) {
        retornar Error("División por cero")
    }
    retornar Exito(a / b)
}

variable r = dividir(10, 2)

coincidir (r) {
    caso Exito(valor) → escribir("Resultado: " + valor)
    caso Error(msg) → escribir("Error: " + msg)
}

Alias útiles del preludio

TipoDefiniciónUso común
Opcion<T>Algun(T) | NingunoValores ausentes
Resultado<T, E>Exito(T) | Error(E)Operaciones fallibles