are mappings from arguments of one type to output of possible another type.
The type of functions are usually defined above their definition with the form
funcName :: argType -> outputType.
There can be more argtypes or the outputType can be a function (depending how
you look at it) for Curried Functions which are separated by -> and grouped by parenthesis. To avoid excess parenthesis for such functions it can be utilised that -> is associated to the right.
Examples
For a function even that determines if an Int is an even number
even :: Int -> Bool
even = n ´mod´ 2 == 0For a function that increments a number by 1
increment :: Int -> Int
increment num = num + 1