title | subtitle |
---|---|
Lecture Notes |
Functional Programming Abstractions |
These notes form an introductory course on functional programming using the Haskell programming language. They are intended to briefly present the necessary syntax and basic concepts (which are covered elsewhere in much greater depth) and focus on further theoretical exposition and examples.
Lecture code can be found in a repo here which you can clone and run yourself. It should be updated every night after lecture.
-
Getting Set Up: One way to set up a Haskell environment with stack, as well as some options for minimal tooling.
-
Introduction to Haskell: Expressions, values, and types.
-
Algebraic Datatypes: Defining and using types in Haskell, and the basics of type algebra.
-
Higher Order Functions: Functions that operate on other functions, generalizing basic functions, and defining
map
. -
Folds, Scans, and Laziness: Examining the many ways to process lists.
-
Typeclasses: Introducing typeclasses and polymorphism.
-
Typeclasses II, Batteries Included: More on the built-in typeclasses in Haskell.
-
Semigroup: Abstracting compositional structures.
-
Functor: Lifting function application to a new level.
-
Applicative: Functions in context.
-
Monad: It isn't that complicated.
-
And more to come ...
- Idris and Dependent Types