Basic Type Systems Before we get into really tricky things like classes. First-Class Values Structs, Records, and ADTs Type Parameters Typeclasses