Os parâmetros de declaração são seguidos por um tipo (o inverso de algumas linguagens de programação) e, em seguida, um tipo de retorno.
A última expressão em um corpo de uma função (ou qualquer bloco) torna-se o valor de retorno. Simplesmente omita o ; no final da expressão. A palavra-chave return pode ser usada para retorno antecipado, mas a forma “valor nu” é idiomática no final de uma função (refatore gcd para usar um return).
Algumas funções não têm valor de retorno e retornam o ‘tipo unitário’, (). O compilador irá inferir isso se o tipo de retorno -> () for omitido.
Sobrecarga não é suportada - cada função tem uma única implementação.
Sempre usa um número fixo de parâmetros. Argumentos padrão não são suportados. Macros podem ser usadas para suportar funções variádicas.
Sempre usa um único conjunto de tipos de parâmetros. Estes tipos podem ser genéricos, o que será abordado mais tarde.