June 29 - September 23, 2015; Chicago, IL
- Lecture 1 on June 29 Introduction ("Why Haskell?") as well as the core ideas behind functional programming -- and why they're important. Initial foray into Haskell coding with
ghci
and an explanation of function currying. - Lecture 2 on July 1. Covered: user-defined data types and motivations for using them, sum and product types, pattern matching.
- Lab 1 on July 6. Covered: structure of a single-module project,
ghc
and some basic console I/O. - Lecture 3 on July 8. Covered: review of anonymous functions, type unification, and an introduction to Haskell's laziness.
- Lecture 4 on July 13. Covered: weak head normal form (WHNF) and list functions.
- Lecture 5 on July 16. Covered: type classes such as
Eq
,Ord
, andMonoid
. - Lecture 6 on July 20. Covered: higher-kinded types and type classes
Functor
,Applicative
, andMonad
. - Lecture 7 on July 22. Covered:
Reader
,Writer
monads,Applicative
andMonad
laws, monad transformers. - Lab 2 on August 5. Covered: modules and namespacing, applicative parsing with
parsec
, a monad-transformer stack (Lisp
monad), and sets and maps (Data.Set
,Data.Map
). - Lecture 8 on August 13. Covered:
Foldable
andTraversable
, plus a potpourri of language extensions (includingMultiParamTypeClasses
andFunctionalDependencies
.) - Lecture 9 on August 17. Covered: IO, files and
Handle
, error-handling and theException
type-class. Also,IORef
andMVar
. - Lecture 10 on September 9. Covered: Lenses! (Also, Prisms and Traversals, very briefly.)