Conceitos e a terminologia (transformação funcional)
Este tópico apresenta os conceitos e a terminologia de transformações e puras. A abordagem funcional de transformação a transformação passa de dados codificação que geralmente é mais rápido, mais programar completo expressive, e mais fácil depurar e manter que a programação mais tradicional, mais imperativa.
Observe que os tópicos nesta seção não são destinados explicar totalmente funcional programação. Em vez disso, esses tópicos identificam alguns dos recursos funcionais de programação que facilitam transformar XML de uma forma para outra.
Transformação que é funcional pura?
Na transformação funcional pura, um conjunto de funções, funções puraschamados, define como transformar um dataset estruturados em sua forma original em outro formulário. A palavra “puras” indicam que as funções são passível de composição, que exigem que são:
Independente, de modo que eles possam ser ordenados livremente e reorganizados sem complicação ou interdependências com o restante do programa. As transformações puras não têm nenhum conhecimento de efetuam-no ou em cima do seu ambiente. Isto é, as funções usadas na transformação não têm efeito colateral.
Sem estado, de modo que executa a mesma função ou conjunto específico de funções na mesma unidade entrada sempre as mesmas saída. As transformações puras não têm memória do seu uso prévio.
Importante
No restante deste tutorial, o termo “function” pura é usado em um sentido geral indicar uma abordagem de programação, e não em um recurso de linguagem específica.
Observe que as funções puras devem ser implementadas como métodos em C# e funções em Visual Basic.(Em Visual Basic, as sub-rotinas não podem retornar um valor, e portanto não são usados escrevendo transformações puras funcionais.)
Além disso, você não deve confundir funções puras com os métodos puros virtuais em C++.O último indica que a classe recipiente é abstrato e que nenhum corpo do método é fornecido.
Programação funcional
Programação funcional é uma abordagem de programação que suporte diretamente a transformação funcional pura.
Historicamente, as linguagens de programação funcionais de uso geral, como o ML, esquema, Haskell, e F# (Microsoft Research), principalmente foram de interesse para a comunidade acadêmica. Embora é sempre possível escrever transformações e puras em C# e Visual Basic, a dificuldade de fazer isso que não irá fazer uma opção atrativas a maioria de programadores. Com C# 3,0 e Visual Basic 9,0, no entanto, as novas construções da linguagem como expressões e inferência de tipos lambda fazem-na funcional programando muito mais fácil e mais produtivo.
Para obter mais informações sobre programação funcional, consulte Programação funcional em relação à programação obrigatória.
Linguagens específicas do domínio FP
Embora as linguagens de programação e gerais não sejam amplamente adotadas, as linguagens de programação e específicas do domínio específicas tinham melhor êxito. Por exemplo, folhas de estilos em cascata (CSS) são usadas para determinar a aparência de muitas páginas da Web, e as folhas de estilos extensíveis de transformações de language (XSLT) são usadas amplamente na manipulação de dados XML. Para obter mais informações sobre XSLT, consulte Transformações XSLT.
Terminologia
A tabela a seguir define os termos relacionados às transformações funcionais.
função (de primeira classe) de pedido superior
Uma função que pode ser tratado como um objeto através de programação. Por exemplo, uma função de pedido superior pode ser passada para ou retornado de outras funções. Em C# e Visual Basic, representantes e expressões lambda são recursos de linguagem que suportam funções de pedido superior. Para gravar uma função de pedido superior, você declara um ou mais argumentos para tomar representantes, e você frequentemente usa expressões lambda para chamá-lo. Muitos dos operadores de consulta padrão são funções de pedido superior.Para obter mais informações, consulte Visão geral de operadores de consulta padrão.
expressão lambda
Essencialmente, uma função anônimo embutido que pode ser usada em que um tipo delegate é esperada. Esta é uma definição simplificada de expressões lambda, mas é suficiente para fins deste tutorial.Para obter mais informações sobre LINQ, consulte Expressões lambda (Guia de Programação em C#) ou Expressões lambda (Visual Basic).
Coleção
Um conjunto estruturada de dados, geralmente um tipo de uniforme. Para ser compatível com LINQ, uma coleção deve implementar a interface de IEnumerable ou a interface de IQueryable (ou uma de suas contrapartes genéricos, de IEnumerator ou de IQueryable).tuple (tipos anônimos)
Um conceito matemático, um tuple é uma sequência finito rotuladas de objetos, cada um de um tipo específico. Um tuple também é conhecido como uma lista ordenada. Tipos anônimos são uma implementação de linguagem desse conceito, que permitem que um tipo sem nome da classe ser declarados e um objeto do tipo a ser instanciada ao mesmo tempo.Para obter mais informações, consulte Tipos anônimos (Guia de Programação em C#) ou Tipos anônimos (Visual Basic).
inferência de tipos (digite implícito)
A capacidade de um compilador de determinar o tipo de uma variável na ausência de uma declaração de tipo explícita.Para obter mais informações, consulte Variáveis locais de tipo implícito (Guia de Programação em C#) ou Inferência de tipo local (Visual Basic).
execução adiada e avaliação lazy
O atraso de avaliação de uma expressão até que o valor resolvido é realmente necessário. A execução adiada é suportado em coleções.Para obter mais informações, consulte Introdução a consultas LINQ (C#) e Execução adiada e avaliação lenta em LINQ to XML.
Esses recursos de idioma serão usados em exemplos de código em todo esta seção.
Consulte também
Conceitos
Introdução às transformações funcionais puras
Programação funcional em relação à programação obrigatória