← Haskell: De Forma Fácil

Capítulo 1 de 5

A Linguagem Haskell

Miguel Aguiar @mirvoxtm

O Haskell é uma linguagem declarativa puramente funcional que surgiu no final dos anos 80, em um momento em que existiam várias linguagens funcionais diferentes sendo estudadas em universidades, mas nenhuma era um padrão comum. Em 1987, durante uma conferência acadêmica nos Estados Unidos, um grupo de pesquisadores decidiu se reunir para criar uma linguagem funcional única, aberta e que servisse tanto para ensino quanto para pesquisa. A primeira versão oficial, o Haskell 1.0, foi lançada em 1990.

O nome é uma homenagem ao matemático norte-americano Haskell Brooks Curry, que viveu entre 1900 e 1982 e cujos estudos em lógica deram base teórica para a programação funcional. Curiosamente, o sobrenome dele também batiza outra ideia muito usada na linguagem: o currying, que veremos mais adiante.

O que faz Haskell diferente?

Que "Haskell é uma linguagem declarativa e puramente funcional" a gente já sabe, Mas o que isso significa na prática? Explicando de forma simples, As funções são como funções matemáticas, sempre devolve o mesmo resultado para a mesma entrada.

Se você chama sum [1, 2, 3], o resultado será 6 hoje, amanhã e sempre. A função não "guarda" estados internos e não altera nada fora dela. Isso é o que chamamos de pureza, e é uma das características que diferencia o Haskell de linguagens como JavaScript.

Podemos ver isso no exemplo à seguir de uma função que faz uma soma dos elementos de uma lista.

Em JavaScript, realizamos a forma imperativa de pensamento, utilizando de loops e uma variável fixa de soma:

function sum(lista) {
	let sum = 0;
	for(let i = 0; i < lista.length(); i++) {
		sum += lista[i];
	}
	return sum;
}

Enquanto isso, em Haskell, utilizamos do pensamento declarativo, seguindo uma progressão lógica:

- A soma dos elementos de uma lista vazia é 0
sum [] = 0

- Se sum receber uma lista de elementos, pegue o primeiro elemento
- Depois, some ele recursivamente com o resto da lista

sum (elemento:lista) = elemento + sum lista

Observe como no Haskell, você descreve "o que é", não "como fazer". No JavaScript, é preciso instruir o computador passo a passo: crie uma variável, percorra a lista, some, devolva.

Já no Haskell, você apenas descreve o que a soma é:

  • A soma de uma lista vazia é zero.

  • A soma de uma lista com elementos é o primeiro elemento somado com a soma do resto.

Essa forma de pensar, mais próxima de uma definição matemática, é o coração do estilo declarativo.

Onde é usado?

Embora seja menos popular que JavaScript ou Python no dia a dia, o Haskell tem presença forte em áreas que exigem alta confiabilidade, como sistemas financeiros, análise de dados, compiladores e pesquisa acadêmica. Empresas como Facebook, GitHub e bancos de investimento já usaram Haskell em partes críticas de seus sistemas.

Mais do que isso, o Haskell influenciou várias linguagens modernas. Recursos hoje comuns em Rust, Scala, Swift e até no próprio JavaScript (como async/await e o uso de funções como valores) têm raízes em ideias que o Haskell ajudou a popularizar.

Como vamos prosseguir?

O intuito deste E-book é ensinar todos os ins and outs da linguagem de uma forma simples e objetiva até para aqueles que não se dão bem em matemática ou programação!

Vamos tentar ser convidativos e explicativos durante o decorrer do livro e do que for anotado. Sem mais delongas, vamos começar!

Compartilhar:XWhatsAppFacebook

Comentários

Entre na sua conta para comentar este book.

Carregando comentários...