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).