Integrando Haskell à Plataforma .NET - Louise de Barros Monteiro, Monique (2006)
Tradicionalmente, linguagens funcionais fornecem um grau de abstração superior ao encontrado em outros paradigmas (imperativo, orientado a objetos), o que se manifesta por meio de construções de alto nível como funções de alta ordem, aplicações parciais, polimorfismo paramétrico e, em algumas linguagens, avaliação sob demanda. Entretanto, a utilização do paradigma funcional tem-se restringido basicamente a aplicações acadêmicas. Essa restrição é em parte explicada pela ausência de ambientes de desenvolvimento e APIs que melhorem a produtividade do desenvolvedor na construção de aplicações que fazem uso das tecnologias mais recentes de desenvolvimento Web, computação distribuída, arquitetura orientada a serviços, entre outras. Por outro lado, plataformas como a Java Virtual Machine e, mais recentemente, a Plataforma .NET, disponibilizam uma amplagama de serviços e bibliotecas que satisfazem aos tipos de aplicações supracitados. O ambiente .NET, em particular, destaca-se por suportar múltiplas linguagens, apesar do suporte ser mais amplo a linguagens orientadas a objeto. Dentro desse contexto, surge a oportunidade de portar linguagens funcionais para essa plataforma, permitindo não apenas o acesso aos serviços por ela fornecidos como também uma interoperabilidade natural com outras linguagens. O objetivo deste trabalho é o desenvolvimento de uma implementação da linguagem funcional Hask ell para a Plataforma .NET. Tal implementaçãonão é trivial devido ao g a p semântico que existe entre uma linguagem funcional com avaliação sob demanda e um ambiente como o .NET. F oi desenvolvido um gerador de código capaz de gerar, a partir de um programa Hask ell, código em IL - linguagem assembly suportada pela máquina virtual. Paralelamente, foram conduzidas medições de desempenho do código gerado. Tais medições demonstraram performance razoável para váriosprogramas. Entretanto, a principal contribuição deste trabalho está na disponibilizaçãode uma implementação Hask ell que serve como principal passo rumo µa interoperabilidade com a Plataforma .NET. Além disso, a solução desenvolvida serve como um ambiente de teste e validação de diferentes alternativas de tradução de uma linguagem funcional para as construções encontradas em uma plataforma como .NET