Gibt es eine funktionale Programmierung Bibliothek für .NET?
-
01-07-2019 - |
Frage
Zum Beispiel in Java gibt es Functional Java und Higher-Order Java . Beide geben im Wesentlichen eine kleine API zur Manipulation höherer Ordnung, curried Funktionen und vielleicht ein paar neue Datentypen (Tupel, unveränderliche Listen).
Lösung
Haben Sie sich in F # ?
Auch ein ordentlicher Blogeintrag wäre hier , dass die Gespräche darüber, wie die neuen zu verwenden, generic / Lambda-Ausdrücke eingebaut in c # 3.0.
Wenn Sie fügen Sie einfach System.Linq Zum Anfang der Quelldatei unter Verwendung gibt es viele schöne neue Funktionen hinzugefügt, um mit Sammlungen arbeiten wie Falten / Filterung / etc.
Andere Tipps
LanguageExt Aussehen sehr vielversprechend für die Herstellung von funktionaler Stil Programmierung in C # einfacher.
Angenommen, Sie nicht F # für welchen Gründen auch immer verwenden können, und wollen einfach nur funktionelle Paradigmen und Idiome in C # -Code verwenden, Qualität und Zuverlässigkeit zu verbessern:
Functional Art Musterabgleich für C #
Monad-Bibliothek für C # /. Net
Es gibt auch 'elevate' die einige funktionale Dinge wie Optionstypen (maybes) hat usw.
Ich glaube, Sie wollen F #
Auch die neueren Versionen von C # haben viele funktionellen Konzepte in dem Basislangauge enthalten.
Es kann eine solche Bibliothek für C #, aber Sie sollten wahrscheinlich nur mit F # http betrachten: //research.microsoft.com/fsharp/fsharp.aspx und http://msdn.microsoft.com/en-us/fsharp/default.aspx .
Microsoft plant F # ein First-Class-Sprache in Visual Studio zu machen, so dass es sich mit einer der CTPs wenig Risiko sollte Ihre erste Sachen zu bauen.
Wenn Sie nach etwas suchen, das C # erstreckt sich dann nicht, aber es gibt F #, die eine .NET-basierte funktionale Sprache ist. Von der "über F #" :
F # ist eine typisierte funktionale Programmiersprache für .NET Framework. Es verbindet die Prägnanz, Expressivität und Kompositionalität typisierte funktionale Programmierung mit dem Runtime-Unterstützung, Bibliotheken, Interoperabilität, Werkzeuge und Objektmodell von .NET. F # ergibt sich aus der ML-Familie von Sprachen und hat eine Kernsprache kompatibel mit der OCaml, aber auch von C # und Haskell zieht. F # wurde von Grund auf ein Bürger erster Klasse auf .NET sein, glatt Interoperabilität mit anderen .NET-Sprachen geben. Zum Beispiel, C # und F # können einander direkt aufrufen. Dies bedeutet, dass F # sofortigen Zugriff auf alle .NET Framework-APIs, darunter zum Beispiel Windows Presentation Foundation und DirectX. In ähnlicher Weise in F # entwickelte Bibliotheken können aus anderen .NET-Sprachen verwendet werden.
Da F # und OCaml eine ähnliche Kernsprache teilen, einige OCaml Bibliotheken und Anwendungen können Cross-kompilieren entweder direkt oder mit geringfügigen bedingt kompilierte Änderungen. Dies stellt einen Weg zur Quer Kompilierung und / oder Port vorhandenen OCaml Code zu .NET und ermöglicht auch Programmierer zwischen diesen Sprachen Fähigkeiten zu übertragen. Ein Schwerpunkt des Projektes ist es, die Reichweite von OCaml-ähnlichen Sprachen in Arenen zu erweitern, wo sie traditionell nicht verwendet worden. Während des gesamten Projektes sind die Designer von F # dankbar für die Unterstützung und Förderung von Xavier Leroy und anderen in der OCaml Gemeinschaft.
Nicht eine schrumpfverpackte Bibliothek per se, aber Luca Bolognese von Microsoft hat
Schauen Sie sich http://code.msdn.microsoft.com/FunctionalCSharp für einige Proben.
F #, gibt es eine CTP-Version von Microsoft erhältlich.