Arbeiten mit Mengen als Funktionen

Von einemFP Kurs:

type Set = Int => Boolean  // Predicate

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

Warum sollte das Sinn machen?

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

Grundsätzlich ist das, was es tut, der Wert100 zur Funktionx => true. Dh wir liefern 100, es kehrt zurückwahr.

Aber wie hängt das mit Mengen zusammen?

Was auch immer wir setzen, es kehrt zurücktrue. Wo ist der Sinn davon?

Ich verstehe, dass wir unsere eigene Mengenimplementierung / Funktion als Parameter bereitstellen können, der die Tatsache repräsentiert, dass der bereitgestellte Wert in einer Menge enthalten ist (oder nicht) - dann macht (nur) diese Implementierung diecontains Die Funktion muss durch einen Sinn / eine Bedeutung / eine Logik / eine Funktionalität gefüllt sein.

Bisher sieht es jedoch nach einer Unsinnsfunktion aus. Es heißtcontains aber der Name repräsentiert nicht die Logik. Wir könnten es nennenapply() denn was es tut, ist eine Funktion (das 1. Argument) auf einen Wert (das 2. Argument) anzuwenden. Nur den Namen habencontains kann einem Leser sagen, was ein Autor sagen möchte. Ist es nicht zu abstrakt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage