A definição de funções faz-se através de uma sequência de equações da forma:
<aside> ➡️ nome $arg1$ $arg2$ $...$ $argn$ = expressão
</aside>
O nome das funções começa sempre por letra minúscula ou underscore (_).
Quando se define uma função podemos indicar o seu tipo. No entanto, isso não é obrigatório.
O tipo de cada função é deduzido automaticamente pelo compilador.
O compilador infere o tipo mais geral que se pode associar à função. No entanto, é possível atribuir à função um tipo mais especifico.
swap :: (a,b) -> (b,a)
swap (x,y) = (y,x)
troca :: (Int,Char) -> (Char,Int)
troca (x,y) = (y,x)
<aside> 💡 É boa prática de programação indicar o tipo das funções definidas nas scripts Haskell.
</aside>
Exemplos :