Elemar DEV

Negócios, tecnologia e desenvolvimento

Haskell para programadores C# – parte 2 – Aplicação e escrita de funções

Olá pessoal. Tudo certo!?

Então você leu o primeiro post dessa série?! Em caso negativo, leia antes de continuar. Em caso positivo, saiba que continuaremos a desvendar programação em Haskell sob a perspectiva de um cara que sabe programar em C#.

Se você está considerando aprender Haskell “de verdade”, recomendo o excelente livro Programming in Haskell que, aliás, estarei usando como referência para essa série.

Aplicação de funções

Antes de qualquer coisa, em Haskell, quando falamos em “aplicar um função”, estamos dizendo o memso que “chamar/executar uma função” para um determinado conjunto de argumentos.

Haskell tem sintaxe extremamente econômica. Sendo assim, dispensa parênteses sempre que possível.

Um argumento

Por exemplo, em C#, você chamaria um método da mesma classe, passando um argumento, assim:

Foo(x);

em Haskell:

foo x

Dois (ou mais) argumentos

Dois argumentos, em C#:

Foo(a, b);

Em Haskell

foo a b

Em Haskell, além de não usar parênteses, você também não usa vírgulas para separar argumentos.

O resultado de uma função como argumento

C#

Foo(Fee(x));
Foo(a, Fee(b));

Haskell

foo (fee x)
foo a (fee b)

Repare, em Haskell os parênteses servem para determinar prioridade de execução.

Pegou a idéia?!

Escrevendo funções

Haskell tem um conjunto rico de funções built-in. Entretanto, você pode definir suas próprias funções facilmente.

Para começar, crie um arquivo com um nome qualquer (usarei hello.hs). Perceba que hs (Haskell Script) é a extensão comum usada para arquivos que definem funções em Haskell.

Esse será o conteúdo:

add a b = a + b
inc a = add a 1
double x = x + x
quadruple x = double (double x)

Familiar, não?! Parecem expressões lambda em C#. Certo!? Veja:

Func<int, int, int> add = (a, b) => a + b;
Func<int, int> inc = a => add(a, 1);
Func<int, int> @double = x => x + x;
Func<int, int> quadruple = x => @double(@double(x));

De onde você acha que o time do C# tirou a idéia?! Smiley de boca aberta

No hugs, utilize a opção do menu (File->Open) para carregar o script. Então, poderá usar suas novas funções normalmente.

image

Perceba que o Hugs executa a instrução :load do Haskell para efetivamente fazer o trabalho.

Era isso.

2 comentários em “Haskell para programadores C# – parte 2 – Aplicação e escrita de funções

  1. Pingback: Haskell para programadores C# – parte 3 – Tipos! Tipos! Tipos! .. e classes (?!). « Elemar DEV

  2. Pingback: Haskell para programadores C# – parte 4– Respostas condicionais « Elemar DEV

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 10/06/2012 por em Post e marcado , , .

Estatísticas

  • 703,407 hits
%d blogueiros gostam disto: