Slide 15 de 37

Funções de primeira classe

Uma referência solta, e map
func double(n: Int): Int { return n * 2 }

proc main(): void {
	f := double
	echo "{f(21)} {map([1, 2, 3], double)}"
}
Aplicação parcial
func add(a: Int, b: Int): Int { return a + b }

proc main(): void {
	addFive := add(5, _)   // _ se torna o parâmetro
	echo addFive(10)
}
Algo chamável é um valor: um nome solto por si só (f := toma) ou uma aplicação parcial com buracos _ (handler(_, db)), cada buraco se tornando um parâmetro em ordem. Um valor func pode ser usado onde um proc é esperado, nunca o contrário. Três coisas não podem se tornar valores: um chamável genérico, um com parâmetro mutex, e um com parâmetro de tamanho estático além de uma única ligação imutável.