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

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

Ответы [ 9 ]

9 голосов
/ 02 августа 2016

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

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

5 голосов
/ 12 ноября 2009

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

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

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

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

5 голосов
/ 17 сентября 2008

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

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

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

2 голосов
/ 05 июня 2009

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

2 голосов
/ 18 сентября 2008

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

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

2 голосов
/ 17 сентября 2008

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

F # - это типизированный функциональный язык программирования для .NET Framework. Он сочетает в себе краткость, выразительность и композиционность типизированного функционального программирования с поддержкой времени выполнения, библиотеками, совместимостью, инструментами и объектной моделью .NET. F # происходит от семейства языков ML и имеет основной язык, совместимый с языком OCaml, хотя также использует C # и Haskell. F # был разработан с нуля, чтобы быть первоклассным гражданином в .NET, обеспечивая плавную совместимость с другими языками .NET. Например, C # и F # могут вызывать друг друга напрямую. Это означает, что F # имеет немедленный доступ ко всем API .NET Framework, включая, например, Windows Presentation Foundation и DirectX. Точно так же библиотеки, разработанные в F #, могут использоваться из других языков .NET.

Поскольку F # и OCaml используют один и тот же базовый язык, некоторые библиотеки и приложения OCaml могут кросс-компилироваться либо напрямую, либо с небольшими условно-скомпилированными изменениями. Это обеспечивает путь кросс-компиляции и / или переноса существующего кода OCaml в .NET, а также позволяет программистам передавать навыки между этими языками. Основное внимание в проекте было уделено расширению охвата OCaml-подобных языков на аренах, где они традиционно не использовались. На протяжении всего проекта дизайнеры F # благодарны за поддержку и поддержку Ксавьеру Леруа и другим в сообществе OCaml.

2 голосов
/ 17 сентября 2008

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

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

2 голосов
/ 17 сентября 2008

Я думаю, что вы хотите F #

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

0 голосов
/ 17 сентября 2008

F #, есть версия CTP от Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...