Haskell:Tutorials
lastmod 2020-10-24created 2020-10-1235 edits
Notes on how to use Haskell.
Haskell Basics
- Getting set up
- Variables and functions
- Truth values
- Type basics
- Lists and tuples
- Type basics II
- Building vocabulary
- Simple input and output
Elementary Haskell
- Recursion
- More about lists
- List processing
- Type declarations
- Pattern matching
- Control structures
- More on functions
- Higher order functions
- Using GHCi effectively
Intermediate Haskell
- Modules
- Standalone programs
- Indentation
- More on datatypes
- Other data structures
- Classes and types
- The Functor class
Monads
- Understanding monads
- Maybe - List
- do notation
- IO - State
- Additive monads (MonadPlus)
- Monad transformers
Advanced Haskell
- Monoids
- Applicative functors
- Foldable
- Traversable
- Arrow tutorial
- Understanding arrows
- Continuation passing style (CPS)
- Zippers
- Lenses
- Comonads
- Value recursion (MonadFix)
- Effectful streaming
- Mutable objects
- Concurrency
- Template Haskell
- Type Families
Fun with Types
- Polymorphism basics
- Existentially qualified types
- Advanced type classes
- Phantom types
- Generalized algebraic data types (GADT)
- Datatype algebra
- Type constructors & kinds
Wider Theory
- Denotational semantics
- Equational reasoning
- Program derivation
- Category theory
- The Curry-Howard isomorphism
- fix and recursion
Haskell Performance
- Introduction
- Performance examples
- Graph reduction
- Laziness
- Time and space profiling
- Strictness
- Algorithm complexity
- Data structures
- Parallelism
General Practices
- Debugging
- Testing
- Packaging your software (Cabal)
- Using the Foreign Function Interface (FFI)
- Generic programming: no more boilerplate code
Specialised Tasks
- Graphical user interfaces (GUI)
- Databases
- Working with XML
- Parsing mathematical expressions
- Writing a basic type checker