We have already explored the basic types of Haskell in chapter 2, but now we will look into how we can define our own types. There are three different ways in which we can define new types in Haskell β Type synonyms (or Type aliases), Data declarations, and Newtype declarations.