Você está na página 1de 3

Haskell é uma linguagem de programação puramente funcional, de propósito geral,

nomeada em homenagem ao lógico Haskell Curry. Como uma linguagem funcional, a


estrutura de controle primária é a função; a linguagem é baseada nas observações de
Haskell Curry [2][3] e seus descendentes intelectuais.[4][5] Seu último padrão semi-oficial é
o Haskell 98, destinado a especificar uma versão mínima e portável da linguagem para o
ensino e como base para futuras extensões.

Haskell é a linguagem funcional sobre a qual mais se realizam pesquisas atualmente.


Muito utilizada no meio acadêmico, ė uma linguagem relativamente nova, derivada de
outras linguagens funcionais, como por exemplo Miranda e ML. Ela se baseia em um estilo
de programação em que se enfatizar mais o que deve ser feito (what) em detrimento de
como deve ser feito (how). É uma linguagem que possui foco no alcance de soluções para
problemas matemáticos, clareza, e de fácil manutenção nos códigos, e possui uma
variedade de aplicações e apesar de simples é muito poderosa.

Índice

• 1 História

• 1.1 Haskell 1.0 até 1.4

• 1.2 Haskell 98

• 1.3 Haskell 2010

• 2 Características

• 2.1 Sintaxe

• 2.2 Listas

• 2.3 Tipos de dado

• 2.4 Operadores

• 3 Paradigma

• 3.1 Visão critica do paradigma funcional

• 3.1.1 Vantagens

• 3.1.2 Desvantagens

• 4 Aplicações

• 4.1 Indústria

• 4.2 Web

• 5 Exemplos

• 6 Implementações

• 7 Crítica
• 8 Linguagens relacionadas

• 9 Leitura adicional

• 10 Referências

• 11 Referências bibliográficas

• 12 Ver também

• 13 Ligações externas

História[editar | editar código-fonte]


O conceito de avaliação preguiçosa já estava difundido no meio acadêmico desde o final
da década de 1970. Esforços nessa área incluíam técnicas de redução de grafo e a
possibilidade de uma mudança radical na arquitetura de von Neumann.[6] Após o
lançamento de Miranda em 1985, diversas outras linguagens funcionais de semântica não
rígida proliferaram, como Lazy ML, Orwell, Alfl, Id, Clean, Ponder e Daisy (um dialeto
de Lisp). Mesmo após dois anos, Miranda ainda era a mais usada, mas não estava em
domínio público.
Em setembro 1987 foi realizada uma conferência Functional Programming Languages and
Computer Architecture (FPCA '87), no Oregon. O consenso foi a criação de um comitê com
o objetivo de construir um padrão aberto para tais linguagens.[7] Isso consolidaria as
linguagens existentes, servindo como base para pesquisas futuras no desenvolvimento de
linguagens.[8] A primeira reunião do comitê foi realizada em janeiro de 1988, e algumas
das metas da linguagem foram discutidas. A linguagem deveria ser de fácil ensino, deveria
ser completamente descrita através de uma sintaxe e semântica formal, deveria estar
disponível livremente. Haskell foi criada da necessidade de unir as outras linguagens do
mesmo paradigma em uma só.
Dentre os principais objetivos deste comitê, ao projetar essa nova linguagem, estavam
suas especificações:

•Ser viável para o ensino, pesquisa e aplicações, incluindo sistema de larga escala;
•Ser completamente descritiva via publicação no tocante à sua sintaxe e sua semântica;
•Não ser proprietária, tal que qualquer um pudesse implementá-la e distribuí-la;
•Basear-se em ideias que envolvessem o senso comum;
•Reduzir a diversidade desnecessária de outras linguagens funcionais.
A primeira versão de Haskell foi definida em 1 de abril de 1990.[9] Seguiu-se a versão 1.1
em agosto do ano seguinte, a versão 1.2 em março de 1992, a versão 1.3 em maio de
1996 e a versão 1.4 em abril de 1997.[10] Esforços posteriores culminaram no Haskell 98,
publicado em janeiro de 1999 e que especifica uma versão mínima, estável e portável da
linguagem e a biblioteca para ensino. Esse padrão sofreu uma revisão em janeiro de 2003.
[11]

A linguagem continua evoluindo, sendo as implementações Hugs e GHC consideradas os


padrões de facto. A partir de 2006 começou o processo de definição de um sucessor do
padrão 98, conhecido informalmente por Haskell′ ("Haskell Prime").[12]

Haskell 1.0 até 1.4[editar | editar código-fonte]


A primeira versão do Haskell (“Haskell 1.0”) foi definida em 1990. Os esforços do comitê
resultaram em uma série de definições da linguagem (1.0, 1.1, 1.2, 1.3 e 1.4).
Haskell 98[editar | editar código-fonte]
No final de 1997, as séries culminaram no Haskell 98, com a intenção de especificar uma
versão mais estável e portátil da linguagem acompanhada de uma biblioteca padrão para
ensino, e como base para extensões futuras. O comitê expressou satisfação em criar
extensões e variantes de Haskell 98 a partir da adição e incorporação de atributos
experimentais.

Em fevereiro de 1999, o padrão da linguagem foi originalmente publicado em um relatório


chamado de The Haskell 98 Report. Em janeiro de 2003, uma versão revisada foi publicada
como Haskell 98 Language and Libraries: The Revised Report. A linguagem continuou a
evoluir rapidamente, com a implementação do Compilador Glascow Haskell representando
o padrão atual.

Haskell 2010[editar | editar código-fonte]


No começo de 2006, iniciou-se o processo de definir um sucessor para o padrão Haskell
98, informalmente chamado de Haskell Prime. A intenção era de que viesse a ser um
processo incremental para revisar a definição da linguagem, produzindo uma revisão nova
anualmente. A primeira revisão, chamada de Haskell 2010, foi anunciada em novembro de
2009, e publicado em julho de 2010.

Haskell 2010 é uma atualização incremental da linguagem, incorporando atributos muito


utilizados e não controversos previamente ativados por bandeiras específicas do
compilador.

•Módulos hierárquicos. Módulos consistem de sequências de identificadores em maiúsculo


separadas por pontos, ao invés de apenas um identificador. Dessa maneira é possível
nomear os módulos de maneira hierárquica (Data.List ao invés de List), apesar de que
módulos técnicos ainda estão em um espaço monolítico. Essa extensão foi especificada
como um adendo do Haskell 98 e na prática foi universalmente usado.
•A interface de função estrangeira (FFI), permite ligações para outras linguagens de
programação. Apenas ligações para C são especificadas no relatório, mas o design permite
para outras ligações de linguagens. Para suportar isso, declarações de tipos de dados não
permitem conter construtores, admitindo tipos para dados estrangeiros que não podem
ser feitos em Haskell. Essa extensão foi previamente especificada no adendo do relatório
de Haskell 98 e vastamente utilizado.
•Os chamados padrões n+k (definições da forma fact (n+1) = (n+1) * fact n) não são mais
permitidos. Esta sintaxe enganava a semântica, onde no código parecia ter sido usado o
operador (+), na realidade utilizava-se (-) e (>=).
•As regras de inferência de tipo foram afrouxadas para permitir que mais programas
chequem o tipo.
•Alguns assuntos da sintaxe (mudança na gramática formal) foram corrigidos: proteções
de padrões foram adicionadas, permitindo correspondências entre padrões e proteções; a
ordem de operações matemáticas foi especificada de uma maneira mais simples do que
na prática; um caso na interação de operadores e comentários da sintaxe léxica da
linguagem foi endereçada; e a interação da notação do e if-then-else foi ajustada para
eliminar erros inesperados de sintaxe.
•A diretriz da linguagem foi especificada. Por volta de 2010, dúzias de extensões da
linguagem estavam sendo vastamente utilizadas, e GHC (entre outros compiladores)
permitiram a diretriz especificar extensões com uma lista de identificadores. Compiladores
de Haskell 2010 necessitavam da extensão Haskell2010, e eram encorajadas a suportar
outras várias que correspondiam a extensões adicionadas no Haskell 2010

Você também pode gostar