Wed, Aug 30 |
Lec1 |
Slides: Introduction |
Wed, Sep 6 |
Basics |
Haskell Basics |
Mon, Sep 11 |
HigherOrder |
Higher-Order Programming Patterns |
Mon, Sep 11 |
SecretCode |
Optional exercise: SecretCode |
Wed, Sep 13 |
Foldr |
In class exercise: foldr |
Wed, Sep 13 |
Sum |
Optional exercise: foldr vs. foldl |
Mon, Sep 18 |
Datatypes |
User-defined datatypes |
Wed, Sep 20 |
DList |
In class exercise: Difference lists |
Wed, Sep 20 |
TreeFolds |
Extra practice: Tree folds |
Mon, Sep 25 |
Classes |
Type Classes |
Mon, Sep 25 |
IOExercise |
In class exercise: IOExercise |
Wed, Sep 27 |
MonoidFoldable |
In class exercise: Semigroup, Monoid and Foldable |
Mon, Oct 2 |
Lec9 |
Slides: QuickCheck |
Mon, Oct 2 |
QuickCheck |
Type-directed Property Testing |
Wed, Oct 4 |
QuickList |
In class exercise: QuickCheck properties for lists |
Mon, Oct 9 |
Lec11 |
Slides: RedBlack trees |
Mon, Oct 9 |
RedBlack |
Red Black Trees |
Wed, Oct 11 |
Lec12 |
Optional class: HW Workday |
Mon, Oct 16 |
GADTs |
GADTs |
Wed, Oct 18 |
RedBlackGADT0 |
Red Black Trees (Redux) |
Mon, Oct 23 |
MaybePractice |
In class exercise: Practice with Maybe Monad |
Mon, Oct 23 |
Monads |
The Maybe and List Monads |
Wed, Oct 25 |
EitherMonad |
In class exercise: The Either Monad |
Wed, Oct 25 |
GenericMonads |
In class exercise: General Monadic Functions |
Mon, Oct 30 |
State |
A Generic State Transformer |
Mon, Oct 30 |
StateMonad |
The State Monad! |
Wed, Nov 1 |
Graph |
Optional exercise: DFS using the state monad |
Wed, Nov 1 |
RandomGen |
In class exercise: Random Generation |
Mon, Nov 6 |
Parsers |
Parsing with Applicative Functors |
Wed, Nov 8 |
Xml |
In class exercise: XML parsing |
Mon, Nov 13 |
MtlExample |
MtlExample |
Mon, Nov 13 |
Transformers |
Monad Transformers |
Wed, Nov 15 |
LSyntax |
In class exercise: LSyntax |
Wed, Nov 15 |
TransformersExercise |
In class exercise: Monad Transformers |
Mon, Nov 20 |
LiquidHaskell |
LiquidHaskell |
Mon, Nov 27 |
Client |
Concurrency client |
Mon, Nov 27 |
Concurrency |
A Poor Man's Concurrency Monad |
Wed, Nov 29 |
ConcurrencyTransformer |
In class exercise: Concurrency Monad Transformer |