3 expressions types and parametric polymorphism
Since Haskell is statically typed, it can infer from the expression itself what function types we're using. Specifically, you can skip over function:: a -> b and define function directly.
table of contents: