Praca z zestawami jako funkcjami
OdFP kierunek:
type Set = Int => Boolean // Predicate
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
Dlaczego miałoby to sens?
assert(contains(x => true, 100))
Zasadniczo to, co robi, zapewnia wartość100
do funkcjix => true
. To znaczy, zapewniamy 100, wracaprawdziwe.
Ale jak to się ma do zestawów?
Cokolwiek umieścimy, wrócitrue
. Gdzie to ma sens?
Rozumiem, że możemy dostarczyć własną implementację / funkcję zestawu jako parametr, który reprezentowałby fakt, że podana wartość znajduje się wewnątrz zestawu (lub nie) - wtedy (tylko) ta implementacja sprawia, żecontains
funkcja może być wypełniona pewnym poczuciem / znaczeniem / logiką / funkcjonalnością.
Ale jak na razie wygląda to jak funkcja nonsensowna. To jest nazwanecontains
ale nazwa nie reprezentuje logiki. Możemy to nazwaćapply()
ponieważ to, co robi, to zastosowanie funkcji (pierwszy argument) do wartości (drugi argument). Posiadanie tylko nazwycontains
może powiedzieć czytelnikowi, co autor może chcieć powiedzieć. Czy nie jest to zbyt abstrakcyjne?