Terça-feira, 24 de março de 2009 às 09h30

Introdução ao F# - Parte 01

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.

4 comentários

 Wilson Bruno Fonseca Pereira
25/03/2009 14h39

Instalaçao do F#

caro amigo, eu baixei o F# mas nao consegui instala-lo. Na Pasta q eu dizipei tem algumas outras pastas e dois arquivos em Lotes, mas executando todos eles eu nao consegui nada. Eu preciso do VS2008 instalado ou nao? preciso de algum framework??? oq será que eu fiz de errado? eu baixei a msm versao q vc usou no seu exemplo.

Grato, Wilson Bruno

 Thomas Alexander Semple
21/05/2009 08h58

Wilson, bom dia. Desculpa a demora, acabei só vendo hoje seu comentário. Quando o F# Compiler é instalado, ele permite que você compile inclusive por linha de comando, pelo fsc.exe. Se você tiver o Visual Studio, seu trabalho certamente ficará mais fácil. O F#, assim como outras linguagens da plataforma .net pode ser utilizada sem o Visual Studio (embora não muito recomendável). Qualquer outra dúvida me fale. Forte Abraço,

F# é muito interessante...

Estou iniciando no .NET, achei o F# muito interessante, consegui um material no DVD SuperKIT - http://www.conceitohost.com.br/superkit/ vou estudar bastante pois o assunto é bem legal.

 Thomas Alexander Semple
21/05/2009 09h02

Caro Roberto,

Fico feliz que tenha gostado do F#. Espero que este material te ajude em sua inicialização na plataforma .Net. Sugiro também que acompanhe os outros post que estou fazendo sobre F#, aqui mesmo no imasters. Qualquer dúvida, estou a disposição. Forte Abraço.

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Thomas Alexander Semple é engenheiro eletrônico com ênfase em telecomunicações. Residiu por mais de dois anos nos Estados Unidos e é líder de projetos da T4W. Com mais de 12 anos de experiência, participa de projetos para empresas dos mais diversos segmentos. A T4W (www.t4w.com.br) é uma empresa de tecnologia, que além de produtos voltados aos mercados de turismo e imobiliário, possui uma área de desenvolvimento que vem atendendo empresas de médio e grande porte em projetos corporativos e especiais. Thomas A. Semple também escreve periodicamente para as revistas .Net Magazine e Web Mobile. Twitter: @tomalexsemple

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.