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
fne 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.sioeself-hosted/parser/types.siosão centrais para o parsing de declarações.self-hosted/check/types.sio,self-hosted/check/infer.sioeself-hosted/check/effects.siocobrem a tipagem de funções e os requisitos de efeito.self-hosted/check/traits.sioeself-hosted/check/specialization.siosã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.