26 · Efectos Algebraicos
Handlers antes del bloque
with handler_value { cuerpo } evalúa e instala el handler antes del cuerpo. Tiene la misma semántica que handle cuerpo with handler_value. Los bloques anidados restauran el handler exterior; retornos y limpieza conservan sus límites léxicos. El valor debe ser un Handler comprobado.
En esta página
with handler_value { cuerpo } evalúa e instala el handler antes del cuerpo. Tiene la misma semántica que handle cuerpo with handler_value. Los bloques anidados restauran el handler exterior; retornos y limpieza conservan sus límites léxicos. El valor debe ser un Handler comprobado.
Ejemplo completo
Handlers antes del bloque.
21-lexical-handlers.zolo
// Prefix handler installation keeps the interpretation next to its scope.
// expected:
// memory
// inner
// memory
effect Config {
fn read() -> str
}
fn load() with Config -> str = perform Config::read()
let memory = handler {
Config::read() => "memory",
}
let inner = handler {
Config::read() => "inner",
}
print(with memory { load() })
let nested = with memory {
let answer = with inner { load() }
answer
}
print(nested)
print(with memory { load() })
Reglas y comportamiento
Handlers y ámbitos de recursos · Documentación
Desde un checkout del repositorio:
zolo examples/features/25-effects/21-lexical-handlers.zolo
Consulta también