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?