Trabajando con conjuntos como funciones

A partir de unaFP curso:

type Set = Int => Boolean  // Predicate

  /**
   * Indicates whether a set contains a given element.
   */
  def contains(s: Set, elem: Int): Boolean = s(elem)

¿Por qué tendría eso sentido?

assert(contains(x => true, 100))

Básicamente lo que hace es aportar el valor.100 a la funciónx => true. Es decir, proporcionamos 100, devuelvecierto.

Pero, ¿cómo se relaciona esto con los conjuntos?

Lo que sea que pongamos, vuelve.true. ¿Dónde está el sentido de ello?

Entiendo que podemos proporcionar nuestra propia implementación / función de conjunto como un parámetro que representaría el hecho de que el valor provisto está dentro de un conjunto (o no); entonces (solo) esta implementación hace quecontains La función se llena con algún sentido / significado / lógica / funcionalidad.

Pero hasta ahora parece una función sin sentido. Se llamacontains pero el nombre no representa la lógica. Podriamos llamarloapply() porque lo que hace es aplicar una función (el primer argumento) a un valor (el segundo argumento). Teniendo solo el nombrecontains puede decirle a un lector lo que un autor podría querer decir. ¿No es demasiado abstracto, tal vez?

Respuestas a la pregunta(2)

Su respuesta a la pregunta