Basic Types
Haskell is a strongly, statically typed language. This means that the compiler checks at compile time whether the values you pass to a function as arguments have the expected type. In fact, Haskell makes it quite a bit easier to define your own data types and functions to operate on them than many other languages. This encourages you to define new types—new types, not just type aliases as in C—for almost any type of data you want to represent. This helps the compiler to catch logical errors in your code. We'll get into this use of custom types later. Here, we will very briefly look at the primitive built-in types that Haskell offers. To do interesting things, you will need to learn about collection types such as lists, arrays, and maps, but we'll introduce these when we need them.