Programação em Haskell
Relatório de pesquisa: Programação em Haskell. Pesquise 862.000+ trabalhos acadêmicosPor: gilberlonrios • 3/11/2013 • Relatório de pesquisa • 9.622 Palavras (39 Páginas) • 292 Visualizações
ÓAndré Rauber Du Bois
Programação Funcional com a
Linguagem Haskell
ÓAndré Rauber Du Bois
dubois@macs.hw.ac.uk
ÓAndré Rauber Du Bois
2
Índice
CAPÍTULO 1 – Programação em Haskell__________________________________ 4
1.1 Expressões e Funções_________________________________________________ 4
1.2. Inteiros____________________________________________________________ 6
1.3 Booleanos _________________________________________________________ 8
1.4 Caracteres e Strings __________________________________________________ 9
1.5 Números em Ponto Flutuante __________________________________________ 11
1.6 Tuplas ____________________________________________________________ 12
1.7 Funções Recursivas _________________________________________________ 13
1.8 Exemplos _________________________________________________________ 15
CAPÍTULO 2 – Listas em Haskell _______________________________________ 18
2.1 Listas_____________________________________________________________ 18
2.2 Operadores ________________________________________________________ 19
2.3 Funções sobre Listas_________________________________________________ 20
2.4 List Comprehensions ________________________________________________ 24
2.5 Definições_________________________________________________________ 26
2.6 Outras Funções Úteis sobre Listas ______________________________________ 30
2.7 Listas Infinitas _____________________________________________________ 33
2.8 Erros _____________________________________________________________ 35
CAPÍTULO 3 – Conceitos Avançados ____________________________________ 37
3.1 Currying __________________________________________________________ 37
3.2 Composição de Funções______________________________________________ 39
3.3 Expressões Lambda _________________________________________________ 41
CAPÍTULO 4 – Classes de Tipo _________________________________________ 43
4.1 Classes de Tipo_____________________________________________________ 43
4.2 Classes Derivadas___________________________________________________ 45
4.3 Contexto __________________________________________________________ 46
4.4 Algumas Classes Importantes__________________________________________ 47
4.4.1 Enum ___________________________________________________________ 47
4.4.2 Read e Show _____________________________________________________ 48
4.4.3 Classes de Números________________________________________________ 48
ÓAndré Rauber Du Bois
3
CAPÍTULO 5 – Tipos Algébricos ________________________________________ 50
5.1 Tipos Algébricos ___________________________________________________ 50
5.2 Tipos Recursivos ___________________________________________________ 52
5.3 Tipos Algébricos Polimórficos_________________________________________ 55
CAPÍTULO 6 – Abstract Data Types_____________________________________ 57
6.1 Abstract Data Type (ADT)____________________________________________ 57
6.2 Exemplo de ADT (Conjuntos) _________________________________________ 58
CAPÍTULO 7 – IO ____________________________________________________ 68
7.1 Interação com o Usuário______________________________________________ 68
7.2 Arquivos __________________________________________________________ 70
7.3 Interações Infinitas __________________________________________________ 72
7.4 Mônadas __________________________________________________________ 73
CAPÍTULO 7 – Construção de Módulos __________________________________ 74
7.1 Módulos __________________________________________________________ 74
7.2 Criando Um ADT___________________________________________________ 76
ÓAndré Rauber Du Bois
4
CAPÍTULO 1 – Programação em Haskell
1.1 Expressões e Funções
A idéia principal da linguagem Haskell é baseada na avaliação de expressões. A
implementação da linguagem avalia (simplifica) a expressão passada pelo programador até
sua forma normal. Por exemplo:
Haskell >”Alô Mundo!!”
“Alô Mundo!!”
Neste exemplo foi passada para o interpretador Haskell a string (seqüência de
caracteres) “Alô Mundo!!”. O sistema respondeu com a mesma seqüência de caracteres,
pois esta expressão não pode mais ser avaliada, já encontra-se normalizada. Pode-se utilizar
comandos mais complexos:
Haskell> 4 + 3
7
ou
Haskell> ((9*6)+(59/3)) *27
1989.0
...