Tipos de dados no Haskell


Haskell é fortemente tipada, mas suporta inferência de tipos, o que significa que você nem sempre precisa declarar o tipo explicitamente.

No entanto, é uma boa prática fazê-lo:

soma :: Int -> Int -> Int
soma x y = x + y

:: indica a assinatura de tipo: Int -> Int -> Int significa que a função toma dois inteiros e retorna um inteiro.

Note

Essa assinatura de tipagem é oriunda da natureza das funções em Haskell onde são unárias e puras. Ou seja, os tipos de cada argumento podem ser encadeados (como mostra o exemplo acima) sendo que sempre o último elemento (após as ->) sempre será o tipo de retorno da função, pois sabemos que funções puras dado um argumento retornam um valor (podendo ser uma função também).

Referências