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

StackOverflow https://stackoverflow.com/questions/83840

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

ты заглянул в Ф#?

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

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

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

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

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

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

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

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

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

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

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

Такая библиотека может существовать для 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# — это типизированный функциональный язык программирования для .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.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top