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

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.

Próximo