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

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

Ответ 1

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

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

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

Ответ 2

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

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

Библиотека Monad для С#/. Net

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

Не библиотека с оберткой как таковая, но Luca Bolognese из Microsoft серию сообщений в блогах, где он строит библиотеку С# для функциональное программирование с такими типами, как кортежи, записи, объединения типов и т.д.:

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

Ответ 8

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

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

Ответ 9

F #, есть версия CTP, доступная от Microsoft.