quinta-feira, 16 de janeiro de 2014

Haskell: Tipo de dados e Introdução a Funções



E aí galera, olha eu aqui de novo.

Hoje vou falar mais um pouco de Haskell. Caso você não saiba do que estou falando, dê uma olhadinha no meu primeiro post .

As funções que desenvolvemos no Haskell têm um tipo de dado de retorno e de entrada, podendo ser:

Tipo Descrição Exemplo
Bool Booleano True/False
Int Inteiro com Domínio Limitado 1900
Integer Inteiro com Domínio Ilimitado 01123581321345589144233
Float Real 3.14159265359
Char Caractere 'h'
String Cadeira de Caracteres 'Haskell'
Void Vazio '_' (underscore. Mais pra frente, entrarei em detalhes)


O Haskell, como padrão, em seu compilador ou interpretador, tem um sistema de dedução automática de tipos em todas as funções que não tiveram seus tipos definidos. Ou seja, você não é 'obrigado' a definir os tipos de dados que serão utilizadas em suas funções. E sim, o Haskell possui uma disciplina rigorosa de tipos de dados, diz-se fortemente tipada. Com isso, sabemos que todas as variáveis, funções e constantes têm somente um tipo de dado e sempre podemos determinar o seu tipo. Certo?

Bom, caso você queira determinar os tipos de dados que serão aceitos por sua função, é bem simples, vamos ao exemplo teórico:

Definição do tipo de dados que serão aceitos pela função nome_funcao:
nome_funcao :: Tipo_Arg_1 -> Tipo_Arg_2 -> Tipo_Saida

Então, 'nome_funcao' é o nome da função, '::' operador de instância de tipos, 'Tipo_Arg_X' (Tipo_Arg_1, Tipo_Arg_2) é tipo de dado de entrada e por fim 'Tipo_Saida' é tipo de dado que será retornado por sua função.

No exemplo prático, talvez fique mais simples:
soma :: Int -> Int -> Int

soma x y = x + y

Ou seja, nossa função 'soma' receberá dois argumentos do tipo Int, 'x' e 'y', e terá como retorno um tipo 'Int'.

Nota: Lembre-se um pouco da Matemática, onde ƒ(x, y) = x + y.

Crie um novo arquivo com o nome de 'soma.hs' e digite o código acima dentro desse arquivo, não se esqueça de usar um editor de texto que tenha como padrão ASCII.

Teste no seu terminal:
hugs soma.hs

Deve aparecer a famosa apresentação do Hugs, digite:
Main> soma 3 4

7

Se sentir alguma dificuldade, baixe o arquivo do meu repositório GitHub: github.com/aterribili/Haskell/blob/master/soma.hs

Mais fácil impossível rs, talvez minha didática ainda não esteja tão boa quanto desejo, mas vou melhorando :)

E, para finalizar, as dicas de hoje são:

Interpretador Haskell Online TryHaskell (Gratuito)
http://tryhaskell.org/

Existe no GitHub, um repositório chamado /free-programming-books, onde nada menos que 16.000 pessoas estão colocando seus tutoriais de programação para compartilhar seus conhecimentos.

https://github.com/vhf/free-programming-books

E lá, tem algo muito bacana sobre Haskell:
https://github.com/taylorrf/learnhaskell
http://haskell.tailorfontela.com.br/

A galera ainda está traduzindo, mas já tem um bom material para começar. Vou dar um fork e tentar a ajudar a traduzir. Até mais galera! Qualquer dúvida, por favor, pergunte abaixo ou me enviem um email: abner.terribili@gmail.com. Vou criar um repositório GitHub e compartilhando os exercícios lá.

Atualizando: Repositório criado, para acompanhar os exercícios: github.com/aterribili/Haskell


Um comentário:

  1. Parabéns. Muito legais seus posts sobre Haskell. Continue colaborando com a comunidade. Abraços

    ResponderExcluir