Multi-paradigma
(com protótipos)
"sistema formal que estuda funções recursivas computáveis
[...]
entidades que podem ser utilizadas como argumentos e retornadas como valores de outras funções"
- WikipediaTrata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis
Uma relação $f: A \to B$ é uma função quando para qualquer x $\in$ A existe um único $(x,y) \in f$
a.k.a. High-Order Functions
Recebem uma função (ou mais) como argumento
Podem retornar uma função
const evolve = (x) => (Pokemon.evolve(x));
const tipoAgua = (x) => (x.tipo === 'water');
a.k.a. First-Class Functions
Funções como valores!
Logo, podemos guardá-las em variáveis.
console.log(true ? "verdadeiro" : "falso");
console.log(if(true) { "verdadeiro"; } else { "falso"; });
nomes = ["George", "Carla"]
nomes.map(&lambda { |nome| nome.upcase })
nomes = ["George", "Carla"]
map(lambda nome : nome.upper(), nomes)
List<String> nomes = Arrays.asList("George", "Carla");
nomes.map(nome -> nome.toUpperCase());