Haskell: diferenças entre revisões

3 538 bytes adicionados ,  13h52min de 12 de dezembro de 2017
Primeira tradução en:Haskell
mSem resumo de edição
(Primeira tradução en:Haskell)
__NOTOC__
{{livro}}
[[Arquivo:Haskell-Logo-Variation.png|right]]
'''Haskell''' é uma {{w|programação funcional|linguagem de programação puramente funcional}}, de propósito geral, nomeada em homenagem ao lógico {{w|Haskell Curry}}.
 
'''Haskell''' é uma [[w:programação funcional|linguagem de programação funcional]]. Se você possui alguma experiência com programação, talvez queira ter uma [[/Visão geral|visão geral]] para entender um pouco como Haskell funciona e suas diferenças em relação a outras linguagens.
As suas principais características são:
* {{w|avaliação preguiçosa}} - que permite ao programador definir listas infinitas, e deixar que o programa só calcule os valores que realmente precisa
* funções recursivas
* "compreensão de lista" ({{w|list comprehension}})
* {{w|casamento de padrões}}
* não existem variáveis: uma vez associado um valor a um símbolo, este não pode mais mudar (dentro do seu escopo)
* todas as funções são unárias; o tratamento do que em outras linguagens seriam funções binárias, ternárias, etc é feito por {{w|currying}}
 
Haskell distingue-se de algumas maneiras:
== Índice ==
* Básico
** [[/Instalação e aritmética/]]
** [[/Variáveis e funções/]]
** [[/Listas e n-uplas/]]
** [[/Carregando arquivos/]]
 
* Haskell é uma linguagem de programação funcional ''pura''. Quando se chama a mesma função duas vezes, em momentos diferentes, mas com os mesmo argumentos, ela retornará exatamente o mesmo valor em ambas as vezes.
== Ver também ==
* Haskell possui um sistema de tipos bastante sofisticado, incluindo classes e tipos algébricos generalizados.
* Haskell é uma linguagem ''preguiçosa'', isto é, que executa operações apenas quando elas são necessárias para obter um resultado final.
 
Uma das vantagens de Haskell é que o código resultante fica muito mais claro quando se usam apenas funções puras, o que torna bem mais fácil o processo de verificar se uma função está correta ou não. Além do mais, o sistema de tipos ajuda a detectar muitos erros, tanto sutis e profundos, quando explícitos e superficiais.
 
== Visão geral ==
{{wikipedia|Haskell (linguagem de programação)}}
 
Este livro, trata-se de uma tradução adaptada do wikilivro de [http://en.wikibooks.org/wiki/Haskell Haskell em inglês]. Entretanto, aqui apresentaremos apenas sua parte introdutória. Esperamos que programadores mais experientes estejam dispostos a contribuir com o processo de expansão desta iniciativa para que ela também inclua a parte avançada contida no original.
 
No caso de você já possuir alguma experiência de programação, é provável que as linguagens com os quais você se habitou sejam bastante diferentes de Haskell, então tenha paciência: hábitos e conceitos destas outras linguagens podem entrar em conflito com os próprio conceitos de Haskell, dificultando o processo de aprendizado. O melhor a se fazer é começar do básico e não pular etapas. Com certeza você aproveitará bastante esse momento de aprendizado.
 
== Conteúdo ==
 
Com os conceitos básicos da linguagem, mais prática com algumas das bibliotecas mais usadas, você conseguirá construir programas simples.
 
A maioria dos capítulos contem exercícios para testar seu progresso. As resoluções podem ser encontradas no apêndice do livro para que você verifique suas respostas.
 
{|width="100%" cellspacing="0" cellpadding="15" valign="top" style="margin:0.8em 0;border:1px solid MediumAquamarine;background:honeydew"
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
 
*=== Básico ===
* [[/Primeiro passo/]] [[Imagem:25%.svg]]
** [[/Variáveis e funções/]] [[Imagem:25%.svg]]
* [[/Verdadeiro ou falso/]] [[Imagem:25%.svg]]
* [[/Tipos básicos/]] [[Imagem:25%.svg]]
** [[/Listas e n-uplas/]] [[Imagem:00%.svg]]
* [[Tipos básicos II]] [[Imagem:00%.svg]]
* [[Póximos passos]] [[Imagem:00%.svg]]
* [[Incrementando seu vocabulário]] [[Imagem:00%.svg]]
* [[Entradas e saídas simples]] [[Imagem:00%.svg]]
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
 
=== Elementar ===
* [[Recursão]] [[Imagem:00%.svg]]
* [[Listas II]] [[Imagem:00%.svg]]
* [[Listas III]] [[Imagem:00%.svg]]
* [[Declaração de tipos]] [[Imagem:00%.svg]]
* [[Casamento de padrões]] [[Imagem:00%.svg]]
* [[Estruturas de controle]] [[Imagem:00%.svg]]
* [[Mais funções]] [[Imagem:00%.svg]]
* [[Funções de alta ordem]] [[Imagem:00%.svg]]
* [[Usando GHCi]] [[Imagem:00%.svg]]
|valign="top" style="border-right: 1px dashed MediumAquamarine"|
 
=== Intermediário ===
* [[Módulos]] [[Imagem:00%.svg]]
* [[Programas completos]] [[Imagem:00%.svg]]
* [[Indentação]] [[Imagem:00%.svg]]
* [[Mais tipos]] [[Imagem:00%.svg]]
* [[Outras estruturas de controle]] [[Imagem:00%.svg]]
* [[Classes e tipos]] [[Imagem:00%.svg]]
* [[A classe Functor]] [[Imagem:00%.svg]]
|valign="top"|
 
=== Mônadas ===
* [[Prólogo: IO, um functor aplicativo]] [[Imagem:00%.svg]]
* [[Entendento mônadas]] [[Imagem:00%.svg]]
** [[Maybe - Listas]] [[Imagem:00%.svg]]
** [[Notação do]] [[Imagem:00%.svg]]
** [[IO - State]] [[Imagem:00%.svg]]
* [[Alternative e MonadPlus]] [[Imagem:00%.svg]]
* [[Transformadores de mônadas]] [[Imagem:00%.svg]]
|}
 
== Apêndices ==
* [[/Açúcar sintático/]] [[Imagem:00%.svg]]
* [[/Resoluções/|Respostas dos exercícios]] [[Imagem:00%.svg]]
* [https://pt.wikibooks.org/wiki/Categoria:Livro/Haskell/Arquivo Páginas antigas]
 
{{AutoCat|Programação}}
153

edições