Introduction

As we mentioned at the start, Haskell is a strongly-typed language so let's expand on that. Haskell is very serious about types and strongly-typed means that each expression in Haskell has an associated type to its value. Expression types can be basic, which are built-in the language – the likes of Int, Integer, Float, Double, Char, String and Bool. Notice that type names always start with an uppercase letter. Types can also be polymorphic (which is why Haskell is also a polymorphically-typed language), in which case they are specified through type variables beginning with a lowercase letter, but more on that shortly.