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?

questionAnswers(2)

yourAnswerToTheQuestion