A cobertura de tradução é parcial. Consulte a fonte em inglês para a referência técnica completa. Ver versão em inglês →

Funções

Definição de funções, valores de retorno e anotações de efeitos.

Funções

Funções ainda são o lugar mais claro onde o Sounio parece consigo mesmo: combinam parâmetros e retornos comuns e tipados com rastreamento explícito de efeitos. Esta página foca no que isso significa no contrato público atual.

Contrato atual

  • Funções são declaradas com fn e podem retornar um valor usando a expressão final do corpo.
  • Efeitos colaterais são modelados explicitamente com with ... na assinatura da função.
  • Padrões simples de genéricos e de métodos existem no design da linguagem, mas os melhores exemplos públicos ainda são os respaldados pelas fixtures atuais e pelo artefato verificado.

Formas de função que vale a pena ensinar

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn log(msg: string) with IO {
    println(msg)
}

Onde isso é implementado

  • self-hosted/parser/items.sio e self-hosted/parser/types.sio são centrais para o parsing de declarações.
  • self-hosted/check/types.sio, self-hosted/check/infer.sio e self-hosted/check/effects.sio cobrem a tipagem de funções e os requisitos de efeito.
  • self-hosted/check/traits.sio e self-hosted/check/specialization.sio são úteis ao rastrear superfícies de chamada mais avançadas.

Erros comuns de documentação a evitar

  • Não apresente assinaturas de função como sintaxe puramente de tipos; no Sounio, a cláusula de efeito é parte do contrato prático da API.
  • Não presuma que todo recurso de chamada avançado mencionado em documentos antigos é igualmente estável no artefato verificado.
  • Para a documentação pública, mantenha os exemplos pequenos, explícitos e fáceis de validar com souc check.