Skip to content
Search

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

See also

Favorite site

author Zer0 sitemap