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

Efectos Personalizados

Define tus propios efectos y propágalos a través de firmas de funciones.

Efectos Personalizados

Sounio te permite declarar tus propios efectos para modelar efectos colaterales específicos de dominio.

Declarar un Efecto

Un efecto es un conjunto nombrado de operaciones:

effect Fail {
    fn fail(msg: string) -> !
}

Usar un Efecto

Llama operaciones del efecto como funciones normales y declara el efecto en la firma:

fn might_fail() with Fail {
    Fail.fail("something went wrong")
}

Propagar Requisitos

Quien llama también debe declarar el efecto:

fn main() with Fail {
    might_fail()
}

Si lo olvidas, el compilador reporta un error:

fn main() {
    might_fail()  // ERROR: Fail effect not declared / handled
}

Nota de la Spec: Handlers de Efecto

El diseño del lenguaje incluye handlers de efectos algebraicos (resumption, interpretación, etc.). Si ves sintaxis handle / resume en docs antiguas, trátalo como a nivel de especificación a menos que el modo actual del compilador lo soporte explícitamente.

Siguiente