Trabalhando com conjuntos como funções
A partir de umFP curso:
type Set = Int => Boolean // Predicate
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
Por que isso faria sentido?
assert(contains(x => true, 100))
Basicamente o que faz é fornecer o valor100
para a funçãox => true
. Ou seja, nós fornecemos 100, ele retornaverdade.
Mas como isso está relacionado a conjuntos?
O que quer que nós colocamos, ele retornatrue
. Onde está o sentido disso?
Entendo que podemos fornecer nosso próprio conjunto de implementação / função como um parâmetro que representaria o fato de que o valor fornecido está dentro de um conjunto (ou não) - então (apenas) essa implementação tornacontains
função ser preenchida por algum sentido / significado / lógica / funcionalidade.
Mas até agora parece uma função sem sentido. É nomeadocontains
mas o nome não representa a lógica. Nós poderíamos chamar issoapply()
porque o que ele faz é aplicar uma função (o primeiro argumento) a um valor (o segundo argumento). Tendo apenas o nomecontains
pode dizer a um leitor o que um autor pode querer dizer. Não é muito abstrato, talvez?