> For the complete documentation index, see [llms.txt](https://haskell.hpmeducation.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://haskell.hpmeducation.com/types-in-haskell/untitled.md).

# 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.
