Um tipo é um nome que denota uma coleção de valores.

> 2 + True
error: ...

Porque "+" deve ser aplicada a números e True não é um número.

Se não houver concordância entre o tipo das funções e os seus argumentos, o programa é rejeitado pelo compilador.

Tipos

Toda a expressão Haskell bem formada tem um tipo que é automaticamente calculado em tempo de compilação por um mecanismo chamado inferência de tipos

Por isso se diz que a linguagem Haskell é “statically typed” (digitado estatisticamente)

Todos os erros de tipo são encontrados em tempo de compilação, o que torna os programas mais robustos

Os tipos permitem assim programar de forma mais produtiva, com menos erros

<aside> 💡 Num programa Haskell não é obrigatório escrever os tipos, o compilador infere-os, mas é boa prática escreve-los pois é uma forma de documentar o código.

</aside>

Tipos básicos

Tipos compostos

Tipos sinónimos

Tipos algébricos / Criar um tipo / Data type