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?

questionAnswers(2)

yourAnswerToTheQuestion