- Stack, cabal, and Hello World in Haskell. Module system. GHC and GHCi. Hackage and Hoogle.
- Introduction to Haskell: Basic syntax, partial application, currying, infix operators. Lists, infinite lists, list comprehension.
- Polymorphism: parametric polymorphism and special polymorphism. Typeclasses and constraints. Classes Eq, Ord, Num, Enum and their instances.
- Datatypes: data, newtype, type. Pattern-matching.
- Functor and its laws, Foldable, Monoid. Examples.
- Applicative and its laws, Traversable. Examples.
- Monad and its laws, examples. Do-notation. Alternative and Monad Plus.
- Monads: IO, State, Writer, Reader and their uses.
- Monad transformers.
- Concurrent and parallel Haskell: introduction to the GHC.Conc and Control.Concurrent modules.
- Concurrent and parallel Haskell: async library.
We strictly recommend you to follow the Haskell style guideline described in the following link in order to make a code in your homework much more readable.