Есть ли библиотека функционального программирования для .NET?

Например, в Java есть Функциональная Java и Java высшего порядка. Оба, по сути, предоставляют небольшой API для управления каррированными функциями более высокого порядка и, возможно, несколько новых типов данных (кортежи, неизменяемые списки).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
4 122
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Я думаю ты хочешь F#

Кроме того, более поздние версии C# содержат множество функциональных концепций, включенных в базовый язык.

F#, есть выпуск CTP от Microsoft.

Такая библиотека может существовать для C#, но вам, вероятно, следует рассмотреть возможность использования только F# http://research.microsoft.com/fsharp/fsharp.aspx и http://msdn.microsoft.com/en-us/fsharp/default.aspx.

Microsoft планирует сделать F# первоклассным языком в Visual Studio, поэтому при использовании одного из CTP для создания исходного материала не должно быть риска.

Если вы ищете что-то, что расширяет C#, тогда нет, но есть F#, который является функциональным языком на основе .NET. Из "О F#" страница:

F# is a typed functional programming language for the .NET Framework. It combines the succinctness, expressivity, and compositionality of typed functional programming with the runtime support, libraries, interoperability, tools and object model of .NET. F# stems from the ML family of languages and has a core language compatible with that of OCaml, though also draws from C# and Haskell. F# was designed from the ground up to be a first-class citizen on .NET, giving smooth interoperability with other .NET languages. For example, C# and F# can call each other directly. This means that F# has immediate access to all the .NET Framework APIs, including, for example, Windows Presentation Foundation and DirectX. Similarly, libraries developed in F# may be used from other .NET languages.

Since F# and OCaml share a similar core language, some OCaml libraries and applications can cross-compile either directly or with minor conditionally-compiled changes. This provides a path to cross-compile and/or port existing OCaml code to .NET, and also allows programmers to transfer skills between these languages. A major focus of the project has been to extend the reach of OCaml-like languages into arenas where they have not traditionally been used. Throughout the project the designers of F# are grateful for the support and encouragement of Xavier Leroy and others in the OCaml community.

Ответ принят как подходящий

вы смотрели F#?

Также был бы интересный пост в блоге здесь, в котором рассказывается о том, как использовать новые общие / лямбда-выражения, встроенные в C# 3.0.

Если вы просто добавите using System.Linq в начало исходного файла, будет добавлено МНОГО новых хороших функций для работы с коллекциями, таких как сворачивание / фильтрация и т. д.

Не упакованная в термоусадочная библиотека сама по себе, но у Луки Болоньезе из Microsoft есть серия сообщений в блоге, где он создает библиотеку C# для функционального программирования с такими типами, как кортежи, записи, объединения типов и так далее:

Также Linq - это в основном библиотека для функционального программирования с синтаксической поддержкой на C#.

Проверьте http://code.msdn.microsoft.com/FunctionalCSharp для некоторых образцов.

Предполагая, что вы не можете использовать F# по какой-либо причине и просто хотите использовать функциональные парадигмы и идиомы в своем коде C# для повышения качества и надежности:

Сопоставление с образцом функционального стиля для C#

Библиотека монад для C# /. Net

Существует также 'поднять', который имеет некоторые функциональные вещи, такие как типы опций (maybes) и т. д.

LanguageExt выглядит очень многообещающим для упрощения программирования в функциональном стиле на C#.

https://github.com/louthy/language-ext

Еще один вариант, который стоит рассмотреть - FuncSharp. Он не такой тяжелый, как LanguageExt, и охватывает наиболее важные шаблоны / аспекты.

Другие вопросы по теме