In Chapter 3, Dr. Meijer explores types and classes in Haskell. A type is a collection of related values and in Haskell every well-formed expression has a type. Using type inference, these types are automatically calculated at run time. If
expression e returns a type t, then e is of type t, e :: t. A function is a mapping of one type to another type and you will learn about new types of functions in this lecture, specifically curried functions: functions that return functions as a result (and
functions are values, remember) and polymorphic functions (function with a type that contains one or more type variables).
You should watch these in sequence (or skip around depending on your current level of knowledge in this domain):
functional, programming, haskell