Haskell is a purely functional computer programming language. To be more precise, it is a polymorphically-, statically- and strongly-typed, lazy, compiled, and pure functional programming language. We will explore what all of those mean soon enough, but letβs start by reviewing what functions are, what functional programming is and how functional programming differs from imperative programming.