15.9.05

C#: uma linguagem funcional?

Há algum tempo que eu digo que várias inovações em linguagens de programação que surgiram da pesquisa com linguagens funcionais estão se tornando mainstream. Nos últimos anos a comunidade C++ vem namorando cada vez mais com a programação funcional, como prova a existência de bibliotecas de templates como FC++ e boost.lambda. Agora a linguagem C# está adicionando várias características antes conhecidas apenas em linguagens funcionais, como detalhado nesta página na MSDN. Alguns destaques (via PLNews):

  • Implicitly typed local variables, which permit the type of local variables to be inferred from the expressions used to initialize them.
  • Extension methods, which make it possible to extend existing types and constructed types with additional methods.
  • Lambda expressions, an evolution of anonymous methods that provides improved type inference and conversions to both delegate types and expression trees.
  • Object initializers, which ease construction and initialization of objects.
  • Anonymous types, which are tuple types automatically inferred and created from object initializers.
  • Implicitly typed arrays, a form of array creation and initialization that infers the element type of the array from an array initializer.
  • Query expressions, which provide a language integrated syntax for queries that is similar to relational and hierarchical query languages such as SQL and XQuery.
  • Expression trees, which permit lambda expressions to be represented as data (expression trees) instead of as code (delegates).
Inferência de tipos apareceu com a linguagem ML original, na década de 70. Expressões lambda vêm do cálculo-lambda de Alonzo Church, mas foram incorporados pela primeira vez numa linguagem de programação com a Lisp original de John McCarthy. As expressões de consulta fazem parte do LINQ, a tentativa da MS de integrar uma sub-linguagem de consulta e acesso a bancos de dados dentro de C# e Visual Basic. Sobre esse projeto, veja este post de Erik Meijer no Lambda the Ultimate para se ter uma idéia de como a teoria está indo direto para a prática. Resta saber se a salada toda, no final, vai ser boa ou não.

2 comentários:

Anônimo disse...

Great work!
[url=http://heyxopin.com/phix/saqo.html]My homepage[/url] | [url=http://fbvcmzmn.com/pepo/fuxa.html]Cool site[/url]

Anônimo disse...

Good design!
http://heyxopin.com/phix/saqo.html | http://oxnkhofn.com/hzhc/hsbn.html