Course Code: hasall
Duration: 105 hours
Course Outline:

Introduction to Haskell

  • Platform and tools
  • Hello World program
  • A bit of history

Haskell syntax

  • Functions
  • Case distinction and pattern matching
  • Layout (indentation)
  • Control structures (if, case, let, where)

Type system

  • Basic types
  • Simple function types
  • Polymorphism
  • Higher order functions
  • Custom types
  • Numbers in Haskell
  • Type classes

Building programs

  • IO handling
  • Module system
  • Packages and libraries
  • Compiling applications

Examples and case studies

  • Eight queens puzzle in Haskell
  • Dynamic programming and memoization in Haskell
  • Simplified parsing of CSV files
  • An HTTP client

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