.NET

24 mar, 2009

Introdução ao F# – Parte 01

Publicidade

Leia outros artigos desse autor

Conheça o F#

*

F# é a nova linguagem funcional da Microsoft para desenvolvedores de software na plataforma .NET. Caso você não conheço o F# (F Sharp), recomendo que leia meu artigo postado no começo de 2008 e depois volte aqui. Neste artigo quero mostrar como começar com F# “do zero” utilizando instruções “Let”. Gostaria de adiantar que em textos futuros mostrarei como utilizar outros comandos como o Match, Pipelines (|>), fun e muito mais. Farei também um exemplo integrando o F# com outras linguagens, como o C# ou o Vb.net. Demonstrarei também exemplos de aplicações reais com acesso a fonte de dados, teste unitário, inclusive com execução de métodos em paralelo e assyncrono. Sem dúvida o futuro da programação envolve processar métodos em paralelo, ainda mais que os processadores estão permitindo este tipo de funcionalidade, e nos próximos artigos mostrarei como é fácil fazer isto com F#.

Instalando o F# Compiler para o Visual Studio

Antes de começarmos o exemplo, você precisa instalar o F#. Para tanto acesse o link [http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx] e dê download na ultima versão. A que estou utilizando neste exemplo é o CTP de setembro de 2008 (F# September 2008 CTP). Após o download, execute o programa de instalação, conforme Figura 01. Lembrando que é sempre bom fechar o Visual Studio e demais janelas. Siga o passo a passo, não tem onde errar. Após clicar em “Next” será exibida a tela da Figura 02. Aguarde a mensagem de conclusão. Se você possuir o Visual Studio instalado na sua máquina, serão adicionados novos tipos de projetos para F#, conforme Figura 03. Crie uma nova aplicação do tipo “F# Application”.


Figura 01: Inicio da instalação, pressione “Next”


Figura 02: Aguarde a instalação


Figura 03: Caso tenha ocorrido tudo ok, novas templates de F# serão instaladas

Meu primeiro método F# – Olá Mundo!

O Modo como escrevemos código no F# é um diferente de como escrevemos em outras linguagens como C# e Vb.NET. Assim como em linguagens dinâmicas, é possível executar trechos de código para garantir que o resultado é o esperado, antes de mandar para produção. Como não podia ser diferente, o nosso primeiro método será um “Hello World” em F#.

O F# possui algumas funcionalidades bem interessantes, como por exemplo, a janela F# Interactive, que pode ser acessada pelo menu View -> Other Windows -> F# Interactive, ou com o atalho Ctrl + Alt + F, conforme Figura 04. Recomendo que esta janela esteja aberta sempre que estiver codificando em F#. Vamos então escrever nosso primeiro código em F#. A Listagem 01 mostra um código bem simples, conhecido como Olá Mundo, padrão em todo primeiro exemplo de aplicação.


Figura 04: Abra a Janela de Interação com o F#

Listagem 01: Olá Mundo

    #light

let s = "Olá Mundo!!!"

A primeira linha é padrão para todo código F#. Não quero entrar em muitos detalhes, mas em linha geral o F# é uma variação de OCaml, outra linguagem funcional, e quando estamos utilizando esta variação, o comando #light deve ser atribuído na primeira linha do código. Na terceira linha temos o comando let. Este comando, let, talvez seja o mais importante comando do F#, ou pelo menos o mais utilizado. Ele não significa simplesmente atribuir um valor a uma variável, mas sim definir tornar obrigatório o valor a um símbolo. Quando um valor é atribuído a uma variável, futuramente este valor poderá ser alterado, mas quando o let é utilizado, este valor fica com o símbolo durante toda a execução do programa. Let permite inclusive criar funções, listas e outros tipos. Não se preocupe muito que com o uso do F# você entenderá melhor este conceito.

Escreva então o código da Listagem 01, selecione o texto e pressione Alt + Enter. O código será copiado para a janela de interação do F#. Digite nesta janela o comando s;;, para que o valor atribuído à s seja exibido. Se tudo deu certo, Olá Mundo!!! será exibido na janela de interação, conforme Figura 06.

Note que mesmo sem escrever o tipo da variável, o compilador sabe qual é o tipo. Este é o mesmo conceito do tipo anônimo introduzido, por exemplo, no C# 3.0. Apesar de não especificado o tipo, o compilador sabe qual é. Se fosse definida uma variável integer, ou float, por exemplo, o compilador também saberia. O mesmo ocorre para funções e entradas de parâmetros. Isto dá uma segurança de código, pois quanto mais complexo for o código, maior a chance de erro. A Figura 07 mostra que o compilador sabe o tipo da variável.

Figura 05: Após escrever o código da listagem 01, selecione a opção ?Send to F# Interactive?, ou pressione ?Alt + Enter?


Figura 06: Ao digitar ?s;;? na janela de interação, o valor ?Olá Mundo!!!? é escrito


Figura 07: O Tipo da variável não precisa ser definido pelo programador

Criando uma função com “Let”

Let  é um comando muito utilizado em F#, e com ele é possível também criar funções, como a da Listagem 02. O nome da nossa função seria “s” e o parâmetro de entrada o “valor”. Este valor é concatenado com “Olá” e “!!!”, e gerando a saída da função. Seria equivalente ao código da Listagem 03, em VB.NET. Se executar este código, veremos que a saída será o input com a concatenação, conforme Figura 08.

Listagem 02: Exemplo de função com parâmetro de entrada

#light

let s valor = “Olá ” + valor + “!!!”

Listagem 03: Equivalência do código da Listagem 02 (em F#). em VB.Net

    Public Function s(ByVal valor as string) as string
Return "Olá " & valor & "!!!"
End function


Figura 08: Função que retorna a concatenação de uma entrada com “Olá” e “!!!”

Criando Formulas com Let

Bom, estamos começando a entender o comando let. Na Listagem 04 mostro um exemplo de função numérica que duplica a entrada. Apesar de bem simples a função, o que quero mostrar é o conceito. O nome da função é duplicar, e o parâmetro de entrada é x. A saída será x multiplicado por dois. Na Figura 09 é exibido o teste com a função, ao passar como entrada o valor cinco, o retorno será dez. Note pela Figura 10 que agora o tipo é integer, mesmo sem especificar programaticamente.

Listagem 04: Exemplo de construção de formulas com F#

    #light

let duplicar x = x * 2;

Figura 09: Função numérica de duplicar uma entrada. Ao entrar com o número 5, o valor de saída é 10


 
Figura 10: Note que agora o tipo é integer, mesmo sem especificar programaticamente

Finalizando

Creio que, como exemplo inicial em F#, o objetivo foi atingido. Em posts futuros mostrarei outros recursos do F# com o foco de como ele poderá ser utilizado em aplicações “Reais” no dia-a-dia. Forte abraço e até o próximo artigo.