Efeitos Customizados
Defina seus próprios efeitos e propague-os pelas assinaturas de funções.
Efeitos Customizados
Sounio permite declarar seus próprios efeitos para modelar efeitos colaterais específicos de domínio.
Declarando um Efeito
Um efeito é um conjunto nomeado de operações:
effect Fail {
fn fail(msg: string) -> !
}
Usando um Efeito
Chame operações do efeito como funções normais e declare o efeito na assinatura:
fn might_fail() with Fail {
Fail.fail("something went wrong")
}
Propagando Requisitos
Quem chama também deve declarar o efeito:
fn main() with Fail {
might_fail()
}
Se você esquecer, o compilador reporta um erro:
fn main() {
might_fail() // ERROR: Fail effect not declared / handled
}
Nota da Spec: Handlers de Efeito
O design da linguagem inclui handlers de efeitos algébricos (retomada, interpretação, etc.). Se você vir sintaxe handle / resume em docs mais antigas, trate como nível de especificação a menos que o modo atual do compilador dê suporte explícito.