MFR: eine funktionale JSL-Programmierbibliothek für die Manipulation von Listen/assoziativen ArraysIch habe diese Hilfsbibliothek entwickelt, während ich an einem großen JSL-Framework gearbeitet habe. Nachdem ich die n-te For()-Schleife codiert hatte, um eine Liste zu durchlaufen (und so viele Fehler im Zusammenhang mit unbeabsichtigtem Überschreiben der Indexvariablen behoben hatte), wurde mir klar, dass der Code viel sauberer aussehen würde (und einfacher zu warten wäre), wenn ich höher verwenden würde -Level-Abstraktionen, wie sie üblicherweise in der funktionalen Programmierung verwendet werden.
Die Bibliothek implementiert das Trio map/filter/reduce, das in Sprachen wie Python und JavaScript verfügbar ist, plus ein paar mehr wie apply, Reduce und Compare. Es wurde inspiriert von http://book.pythontips.com/en/latest/map_filter.html .
Überprüfen Sie die Tests auf Verwendungsbeispiele und lassen Sie mich wissen, wenn Sie einen Fehler oder eine Möglichkeit zur Verbesserung finden!
MFR (von Map-Filter-Reduce) ist eine Bibliothek mit funktionalen Programmierprimitiven für JSL.
Enthält grundlegende Tests.
Inspiriert von http://book.pythontips.com/en/latest/map_filter.html
Analytische AnwendungsentwicklungDienstprogrammeBetreff: MFR: eine funktionale JSL-Programmierbibliothek für die Manipulation von Listen/assoziativen ArraysVielen Dank, @jcperkins12 . Schön, dass Sie es nützlich finden.
Betreff: MFR: eine funktionale JSL-Programmierbibliothek für die Manipulation von Listen/assoziativen ArraysDies ist sowohl für das, was es von Natur aus bereitstellt, als auch als Vorlage für die Abstraktion in JSL großartig. Vielen Dank, dass Sie dies gepostet haben.
Re: MFR: eine funktionale Programmierbibliothek für JSLUpdate (8/2019): Die neue Version (MFR2.zip) erweitert die ursprüngliche Funktionalität um neue Befehle. Diese Neufassung verwendet Klassen anstelle von Namespaces für saubereren Code (und um Mixins zu unterstützen). Ausdrucksmanipulation wird verwendet, anstatt anonyme Funktionen für die Verhaltensanpassung zu übergeben (was für jedes Containerelement zu tun ist). Die ZIP-Datei enthält Tests und eine echte Anwendung, die ein zusammengesetztes Wörterbuch (mehrstufiger Schlüssel) implementiert, das für die Implementierung von Caches nützlich ist.
Hier ist eine Liste der verfügbaren Methoden:
Map: Gibt eine Ergebnisliste der Auswertung des Ausdrucks nach der Substitution von Eingabewerten zurück.
Map2dict: Gibt ein Wörterbuch (Associative Array) der Ergebnisse der Auswertung der beiden Ausdrücke nach Substitution der Eingabewerte zurück.
Reduce: Gibt die Akkumulation der Ergebnisse der Auswertung des Ausdrucks nach der Substitution von Eingabewerten zurück.
Filter: Gibt die Elemente in der angegebenen Liste zurück, für die die Auswertung des Ausdrucks nach der Substitution der Eingabewerte wahr ist
Beliebig: Gibt 1 zurück, wenn eines der Elemente in der angegebenen Liste bei Verwendung in der Auswertung des Ausdrucks einen wahren Wert ergibt.
Alle: Gibt 1 zurück, wenn eines der Elemente in der angegebenen Liste bei Verwendung in der Auswertung des Ausdrucks einen wahren Wert ergibt.
Zip: Kombiniert zwei Listen gleicher Länge zu einer einzigen Liste von Paaren entsprechender Elemente. Nicht unterstützt/definiert für assoziative Arrays
Anwenden: Wendet den Ausdruck auf die Eingaben für Nebeneffekte an.
Flach: Nimmt eine verschachtelte Liste und gibt eine Liste zurück, in der sich alle Elemente auf derselben Ebene befinden, wobei die ursprüngliche Reihenfolge beibehalten wird