Wed, Aug 30 |
Lec1 |
Basics |
Wed, Sep 6 |
Lec2 |
Structured Data and Lists |
Mon, Sep 11 |
Lec3 |
Higher-Order Programming Patterns |
Wed, Sep 13 |
SecretCode |
In class Exercise: SecretCode |
Mon, Sep 18 |
Lec4 |
User-defined datatypes |
Wed, Sep 20 |
DList |
Exercise: Difference lists |
Wed, Sep 20 |
Kata |
Exercise: Kata code review |
Mon, Sep 25 |
Classes |
Type Classes |
Wed, Sep 27 |
MonoidFoldable |
Exercise: Monoid and Foldable |
Mon, Oct 2 |
QuickCheck |
Type-directed Property Testing |
Wed, Oct 4 |
QuickList |
Exercise: QuickCheck properties for lists |
Mon, Oct 9 |
Persistent |
A Persistent Set Interface |
Mon, Oct 9 |
RedBlack |
Red Black Trees |
Wed, Oct 11 |
Queue |
Exercise: Purely Functional Queues |
Mon, Oct 16 |
GADTs |
GADTs |
Wed, Oct 18 |
RedBlackGADT |
Red-Black Trees with GADTs |
Wed, Oct 18 |
RedBlackGADTBlackHeight |
Red-Black Trees with GADTs (BlackHeight) |
Mon, Oct 23 |
Monads |
The Maybe and List Monads |
Wed, Oct 25 |
GenericMonads |
Exercise: General Monadic Functions |
Mon, Oct 30 |
Monads2 |
The State Monad! |
Mon, Oct 30 |
STMonad |
The ST and IO Monads |
Mon, Oct 30 |
State |
A Generic State Transformer |
Wed, Nov 1 |
RandomGen |
Exercise: Using the State monad for Random Generation |
Mon, Nov 6 |
Parsers |
Parsing with Applicative Functors |
Wed, Nov 8 |
Xml |
Exercise: XML parsing |
Mon, Nov 13 |
Transformers |
Monad Transformers |
Wed, Nov 15 |
TransExercise |
Transformers Exercise |
Mon, Nov 20 |
DependentTypes |
Dependent Types in Haskell |
Mon, Nov 27 |
Client |
Concurrency client |
Mon, Nov 27 |
Concurrency |
A Poor Man's Concurrency Monad |
Wed, Nov 29 |
TransC |
Exercise: Concurrency Monad Transformer |