Localized V2 rewrite for this language is in progress. Showing English-first content for now.

Efectos

Haz explícitos los efectos colaterales con `with IO`, `with Panic`, `with Async` y efectos personalizados.

Efectos

Sounio rastrea efectos colaterales en las firmas de las funciones usando una cláusula explícita with ....

Puro vs Con Efecto

fn double(x: i32) -> i32 {
    x * 2
}

fn greet() with IO {
    println("Hello")
}

Efectos Integrados (Comunes)

  • IO: consola + filesystem + I/O externo
  • Panic: operaciones que pueden trap/abortar (por ejemplo, división por cero, indexación fuera de rango)
  • Async: async/await y primitivas de concurrencia
  • Alloc: asignación en heap
  • Mut: estado mutable (cuando aplique)
  • GPU: kernels de GPU / operaciones de device (dependiente de features)

Errores de Efecto

Si llamas una función con efecto desde una función pura, el compilador reporta un error hasta que:

  • agregues el/los efecto(s) requerido(s) a la firma del llamador, o
  • refactores para mantener el efecto en el borde (recomendado).

Especificación vs Implementación

El objetivo de la especificación es “los efectos son explícitos en todas partes”. Algunas operaciones integradas pueden hoy tratarse de forma más permisiva que las funciones con efecto definidas por el usuario, según el modo del compilador y los feature flags.

Siguiente