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.