Getting Started with Haskell
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.
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
Quick, intuitive introduction to a core set of Haskell concepts to get started with programming in Haskell and have fun doing it.
Haskell beginners and intermediate level programmers