Course Outline
Basic Typeclassopedia
- Functor
- Applicative
- Foldable, Traversable
- Monads
- Other (Arrow, etc.)
Advanced types
- Algebraic data types in depth
- Advanced Type classes
- Type families
- GADTs
Debugging and code optimizing
- Strictness in data types and functions
- Memory and CPU profiling
- Efficient data structures (bytestring, text, vector and co.)
- Note on "unsafes"
Understanding the Runtime System
- Memory layout in GHC
- Unpacking strict fields
- Understanding and reading Core
Concurrency in Haskell
- Haskell threads
- MVars and co.
- STM
- Parallelism
Foreign Function Interface
- FFI basics
- Safe vs. unsafe
- Globals in Haskell
Template Haskell
- Splicing and quotation
- The Q monad
- Reification
Requirements
Basic knowledge of Haskell programming language and some experience with Haskell programming.
Testimonials
I really liked that there were a lot of practical exercises in which you could put the learned immediately into action.
Daniel Bubla
The atmosphere was very nice, much more relaxed conversation than classic teaching style. Also, several of the techniques, especially those I doubt would hold up or be worth it (effort-gain-wise) under “real world” work conditions (as mentioned above) made me reflect on my coding style, and why I do or don't do some things (both on topics presented int he course and related ones), which I don't do that often (needed the impetus) but is really useful, even if I come to the conclusion that my style already suits my needs well.