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?