Existe uma biblioteca de programação funcional para .NET?
-
01-07-2019 - |
Pergunta
Por exemplo, em Java existe funcionais Java e Higher-Order Java . Ambos essencialmente dar uma pequena API para manipulação de ordem superior, funções ao curry, e talvez alguns novos tipos de dados (tuplas, listas imutáveis).
Solução
você olhou para F # ?
Além disso, um post puro seria aqui que fala sobre como usar o novo expressões genéricas / lambda construída em C # 3.0.
Se você acabou de adicionar usando System.Linq ao topo do seu arquivo fonte, há um monte de boas novas funções adicionadas ao trabalhar com coleções, como dobrar / filtragem / etc.
Outras dicas
Looks LanguageExt muito prometendo para fazer a programação estilo funcional em C # mais fácil.
Assumindo que você não pode usar F # por qualquer motivo, e só quer usar paradigmas funcionais e expressões idiomáticas em seu código C # para melhorar a qualidade e confiabilidade:
estilo funcional correspondência de padrão para C #
biblioteca Mônada para C # /. Net
Há também 'elevar' que tem algumas coisas funcionais, como tipos de opção (maybes) etc.
Eu acho que você quer F #
Além disso, as versões mais recentes de C # tem um monte de conceitos funcionais incluídas no langauge base.
Pode haver uma biblioteca para C #, mas você provavelmente deve considerar apenas usando F # http: //research.microsoft.com/fsharp/fsharp.aspx e http://msdn.microsoft.com/en-us/fsharp/default.aspx .
planos da Microsoft para tornar a F # uma linguagem de primeira classe em Visual Studio que não deverá haver pouco risco em usar um dos CTPs para construir o seu material inicial.
Se você está procurando algo que se estende C # então não, mas existe F #, que é uma linguagem funcional .NET base. Do "Sobre F #" página :
F # é uma linguagem de programação funcional digitado para o .NET Framework. Ele combina a concisão, expressividade e composicionalidade da programação funcional digitado com o modelo de suporte de tempo de execução, bibliotecas, interoperabilidade, ferramentas e objetos de .NET. F # decorre da família ML de línguas e tem uma linguagem central compatível com a da OCaml, embora também chama de C # e Haskell. F # foi projetado desde o início para ser um cidadão de primeira classe em .NET, dando interoperabilidade suave com outras linguagens .NET. Por exemplo, C # e # F pode chamar um ao outro directamente. Isto significa que F # tem acesso imediato a todas as APIs quadro, a NET, incluindo, por exemplo, o Windows Presentation Foundation e DirectX. Da mesma forma, as bibliotecas desenvolvidas em F # pode ser usado a partir de outras linguagens .NET.
Uma vez que F # e share OCaml uma linguagem núcleo semelhante, algumas bibliotecas e aplicativos OCaml pode cross-compilação diretamente ou com pequenas alterações condicionalmente compilados. Isto fornece um caminho para a cross-compilação e / ou porta código OCaml para .NET existente, e também permite que os programadores a habilidade de transferência entre línguas. Um dos principais focos do projeto tem sido a de estender o alcance de línguas OCaml-como em arenas onde eles não têm sido tradicionalmente usados. Ao longo do projeto os designers de F # são gratos pelo apoio e incentivo de Xavier Leroy e outros na comunidade OCaml.
Nem uma biblioteca em si, mas Luca Bolognese retráctil da Microsoft tem uma série de posts onde ele constrói uma biblioteca C # para programação funcional com tipos como tuplas, registros, tipo sindicatos e assim por diante :
Além disso Linq é basicamente uma biblioteca para programação funcional com suporte syntactial em C #.
Confira http://code.msdn.microsoft.com/FunctionalCSharp para alguns amostras.
F #, há uma versão CTP disponível no Microsoft.