Getting Started with Haskell

A monad is just a monoid in the category of endofunctors, what's the problem?

Haskell is an awesome, elegant and powerful language. But not only is the math it is based on (category theory in addition to the usual lambda calculus) abstruse, so is its syntax (with baked-in support for pattern matching, do notation etc.). All this may be useful to experts (some of whom make statements like the one on top) but it is quite confusing to beginners.

The proposed talk is a somewhat opinionated, somewhat unorthodox guide to getting started with Haskell programming. Using intuitive examples, the talk introduces core concepts (lists, basic lambda calculus and types), describes frequently used library functions (folds) and data structures (set and map), and touches upon other topics (monads, debugging). Also, links to specific resources are provided so the slides can be used as a roadmap for subsequent detailed study.

The talk is based on about eight years of learning and using Haskell for industrial R&D projects.

1 favorite thumb_down thumb_up 0 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist

Outline/structure of the Session

  • Haskell program structure: functions and lazy evaluation
  • Lists: head, tail, cons (:) and all that...
  • folds: foldr, the (almost) universal iterator and others
  • Trees and types: Introduction to Haskell type system with tree data structure example
  • Type constructors demystified: Intuitive derivation of list and tree folds from type declaration
  • Key data structures: Set and map
  • Other stuff: Monads, debugging, literate haskell

Learning Outcome

Quick, intuitive introduction to a core set of Haskell concepts to get started with programming in Haskell and have fun doing it.

Target Audience

Haskell beginners and intermediate level programmers

schedule Submitted 3 years ago

Comments Subscribe to Comments

comment Comment on this Submission