Function types

The type X -> Y is a type for functions that take arguments of type X and yield results of type Y. Application of the binary type constructor -> associates to the right, so the type X -> Y -> Z is the same as the type X -> (Y -> Z).