import gleam/int
import gleam/io
import gleam/result
pub fn main() {
io.println("=== map ===")
let _ = io.debug(result.map(Ok(1), fn(x) { x * 2 }))
let _ = io.debug(result.map(Error(1), fn(x) { x * 2 }))
io.println("=== try ===")
let _ = io.debug(result.try(Ok("1"), int.parse))
let _ = io.debug(result.try(Ok("no"), int.parse))
let _ = io.debug(result.try(Error(Nil), int.parse))
io.println("=== unwrap ===")
io.debug(result.unwrap(Ok("1234"), "default"))
io.debug(result.unwrap(Error(Nil), "default"))
io.println("=== pipeline ===")
int.parse("-1234")
|> result.map(int.absolute_value)
|> result.try(int.remainder(_, 42))
|> io.debug
}
El módulo de la biblioteca estándar gleam/result contiene funciones para trabajar con resultados. Los programas Gleam harán un uso intensivo de este módulo para evitar expresiones de caso anidadas excesivas al llamar a múltiples funciones que pueden fallar.
- map actualiza un valor contenido dentro de Ok de un resultado llamando a una función dada sobre él. Si el resultado es un error, no se llama a la función.
- try ejecuta una función que devuelve un resultado sobre el valor contenido dentro de Ok de un resultado. Si el resultado es un error, no se llama a la función. Esto es útil para encadenar varias llamadas de función que pueden fallar, una tras otra, deteniéndose en el primer error.
- unwrap extrae el valor de éxito de un resultado o devuelve un valor predeterminado si el resultado es un error.
Las funciones de resultado se utilizan a menudo con canalizaciones para encadenar varias llamadas a funciones que devuelven resultados.