Gibt es eine funktionale Programmierbibliothek für Objective-C?Funktionale Programmierbibliothek für Objective-C
Antwort
Sie könnten FunctionalKit
FunctionalKit versuchen ist ein Versuch, funktionelle Paradigmen in Objective-C zu verwenden. Es ist eine Reihe von Low-Level-Funktionstypen & APIs. Es enthält Typen wie entweder, Option usw., die es Ihnen ermöglichen, korrekten, sauberen, engen, prägnanten und (wenn möglich) typsicheren Code zu schreiben. Es bietet auch erweiterte Konzepte wie das Heben von Funktionen in Monaden.
Objective-C ist keine funktionale Programmiersprache (es ist ganz offensichtlich prozedurale OO), also sehe ich nicht, wie es so etwas geben würde. Wenn Sie nach Unterstützung für Lambda und Nebenläufigkeit suchen, ist Grand Central Dispatch in 10.6 dafür da.
Pseudo-funktional, wenn Sie mögen ... Ich suche etwas im Geiste von http://functionaljava.org/ und http://code.google.com/p/lambdaj/ für Java. – luvieere
Ich nehme es als ein Kompliment, dass die einzigen Downvotes, die ich bekomme, ohne begleitende Kommentare sind. – Chuck
Nitpick: Lambdas sind kein Ergebnis von GCD; Sie sind ein Teil davon, wie Sie GCD verwenden. Schauen Sie sich FunctionalKit übrigens an. Es ist möglich, in Objective-C sauberen, meist funktionalen und typsicheren Code zu schreiben. –
Sie können Functional.m für funktionale Programmierung in Objective-C verwenden. Es macht intensiven Gebrauch von Blöcken und enthält Ihre üblich funktionale Programmierung Verdächtigen, wie Karte, reduziert, Filter, ablehnen usw.
Sie könnten auch OCTotallyLazy ausprobieren, einen Port der Java-Bibliothek TotallyLazy.
[array(@"one", @"two", @"three", nil) map:^(NSString *item){
return [item uppercaseString];
}];
// Returns array(@"ONE", @"TWO", @"THREE", nil)
Es gibt auch eine Reihe von Makros zur Verfügung, die für eine kürzere Syntax erlauben, zum Beispiel:
Zum Beispiel eines NSArray Abbildung kann wie folgt durchgeführt wird
#define TL_LAMBDA_SHORTHAND
[array(@"one", @"two", @"three", nil) map:_([_ uppercaseString])];
// Returns array(@"ONE", @"TWO", @"THREE", nil)
Es bietet auch eine eigene Sammlertyp, Sequence, die Karten, Filter, etc. lazily bewertet
Hier finden Sie eine Anleitung zur Verwendung von TotallyLazy: http://intrepidis.blogspot.com/2013/07/using-totallylazy-functional-library.html –
Ich bin ein großer Fan von underscore.m.
- 1. Genetische Programmierbibliothek für Java
- 2. Lineare Programmierbibliothek für iOS
- 3. Gute lineare Programmierbibliothek für C#?
- 4. Nicht-lineare Programmierbibliothek in C++
- 5. 2D Dynamische Speicherzuweisung - ObjectiveC
- 6. Funktionale Sprachen & Unterstützung für Memoization
- 7. Schreiben funktionale Spezifikationen für Spiele
- 8. ObjectiveC-Blöcke Java-Äquivalent
- 9. AMF0 Parser in ObjectiveC
- 10. funktionale Abhängigkeit
- 11. Präsentieren Sie kleine ModalViewController ObjectiveC
- 12. ObjectiveC: Wo private Instanzeigenschaften deklarieren?
- 13. Funktionale Programmierdokumentation
- 14. ObjectiveC - Anzeigefenster durch verteilte Objekte
- 15. Was ist die aktivste genetische Programmierbibliothek?
- 16. Welchen genetischen Algorithmus/Programmierbibliothek verwenden Sie?
- 17. Funktionale Programme in nicht-funktionale Sprachen schreiben
- 18. Funktionale Graphen
- 19. ObjectiveC - wie NSUserNotification Kennung Eigenschaft
- 20. Funktionale Absätze
- 21. JS funktionale Programmierung für n Elemente bevölkern
- 22. Compiler-Backend für eine funktionale Sprache
- 23. Pure funktionale Programmierung für die GPU
- 24. Vorlagen für technische und funktionale Spezifikationen
- 25. Haskell: nicht naheliegende Beispiele für funktionale Abhängigkeiten
- 26. Muster für funktionale, dynamische und aspektorientierte Programmierung
- 27. Unterstützung für die funktionale Mustererkennung in Elm
- 28. C++ STL-funktionale Entsprechungen für Metaprogrammierung
- 29. Konstante UUIDs für funktionale Protokollierung (Design)
- 30. Welche funktionale Programmiersprache sollte ich als erste funktionale Programmiersprache wählen?
Es sieht so aus, als würde dies die Programmierung im funktionalen Stil härter machen als die eingebauten Lambdas und zugehörigen Methoden in 10.6, die ich in meiner Antwort erwähnt habe. – Chuck
Probieren Sie den Block Blocks von FunctionalKit aus. Ich habe auch ein System geschrieben, das automatisch jede Operation in einen Optionstyp zur Laufzeit umschließt, die ich in Kürze veröffentlichen werde. Blöcke und Runtime-Badassery machen FunctionalKit zu einem sehr nützlichen Tool, das ich in meinen letzten beiden iPhone-Anwendungen ausgiebig genutzt habe. –