In letzter Zeit habe ich viel über funktionale Programmierung nachgedacht. Perl bietet eine ganze Reihe von Werkzeugen, um diesen Weg zu gehen, aber es gibt etwas, das ich noch nicht finden konnte.
Prototype hat die Funktion detect für Enumeratoren, die Beschreibungen sind einfach diese:
Enumerator.detect(iterator[, context]) -> firstElement | undefined
Finds the first element for which the iterator returns true.
Enumerator ist in diesem Fall eine beliebige Liste, während Iterator ein Verweis auf eine Funktion ist, die nacheinander auf jedes Element der Liste angewendet wird.
Ich suche so etwas für Situationen, in denen die Leistung wichtig ist, z. B. wenn das Anhalten beim Auffinden einer Übereinstimmung Zeit spart, indem der Rest der Liste ignoriert wird.
Ich bin auch auf der Suche nach einer Lösung, die nicht mit dem Laden eines zusätzlichen Moduls, so dass, wenn möglich, sollte es mit builtins nur getan werden. Und wenn möglich, sollte es so prägnant wie dies zum Beispiel sein:
my @result = map function @array;