serokell / hse-haskell-course-src

Haskell course in the Higher School of Economics

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

(Approximate) Syllabus

  1. stack, cabal, and Hello World in Haskell. Module system. GHC and GHCi. Hackage and Hoogle.
  2. Introduction to Haskell: Basic syntax, partial application, currying, infix operators. Lists, infinite lists, list comprehension.
  3. Polymorphism: parametric polymorphism and ad-hoc polymorphism. Typeclasses and constraints. Classes Eq, Ord, Num, Enum and their instances.
  4. Datatypes: data, newtype, type. Pattern-matching.
  5. Functor and its laws, Foldable, Monoid. Examples.
  6. Applicative and its laws, Traversable. Examples.
  7. Monad and its laws, examples. Do-notation. Alternative and MonadPlus.
  8. Monads: IO, State, Writer, Reader.
  9. Monad transformers.
  10. Concurrent and parallel Haskell: async library.

Sources

Articles and blog posts

  1. Philip Wadler. Comprehending Monads
  2. Philip Wadler. Monads for functional programming
  3. Philip Wadler. Theorems for Free
  4. Simon Peyton Jones, Andrew Gordon, Sigbjorn Finne. Concurrent Haskell
  5. Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler. A history of Haskell: being lazy with class
  6. Simon Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich, Mark Shields. Practical type inference for arbitrary-rank types
  7. Cordelia V Hall, Kevin Hammond, Simon Peyton Jones, Philip L Wadler. Type classes in Haskell
  8. Heitor Toledo Lassarote de Paula. A Brief Introduction to Template Haskell
  9. Vladislav Zavialov. Type Families in Haskell: The Definitive Guide
  10. Vladislav Zavialov. Why Dependent Haskell is the Future of Software Development
  11. Vladislav Zavialov. Haskell to Core: Understanding Haskell Features Through Their Desugaring
  12. Simon Marlow, Simon Peyton Jones. The Glasgow Haskell Compiler

Books

  1. Miran Lipovača. Learn You a Haskell for Great Good
  2. Sandy Maguire. Thinking with Types: Type-Level Programming in Haskell
  3. Vitaly Bragilevsky. Haskell in Depth
  4. Alejandro Serrano Mena. Practical Haskell
  5. Graham Hutton. Programming in Haskell

Types and lambda

  1. Benjamin C. Pierce. Types and Programming Languages
  2. Morten Heine Sørensen, Pawel Urzyczyn. Lectures on the Curry-Howard Isomorphism
  3. J. Roger Hindley. Basic Simple Type Theory
  4. Henk Barendregt. Lambda calculi with types
  5. Therry Coquand. Type theory
  6. Jean-Yves Girard, Yves Lafont, Paul Taylor. Proofs and types

Videos

  1. Simon Peyton Jones. Haskell is Useless
  2. Simon Peyton Jones. A History of Haskell: being lazy with class
  3. Philip Wadler. Propositions as types
  4. Philip Wadler. The First Monad Tutorial
  5. A Haskell course by Bartosz Milewski
  6. A more comprehensive (than ours) Haskell course by Denis Moskvin, Computer Science Centre (in Russian)
  7. A lecture course on GHC by Vitaly Bragilevsky, Computer Science Club (in Russian)
  8. A lecture course on type inference by Vitaly Bragilevsky, Computer Science Club (in Russian)
  9. Vladislav Zavialov. Introduction to GUI programming in Haskell
  10. Simon Marlow. Parallel and concurrent programming in Haskell

Guidelines

We strictly recommend you to follow the Haskell style guideline described in the following link in order to make in your homework code more readable.

About

Haskell course in the Higher School of Economics


Languages

Language:TeX 98.7%Language:Haskell 1.3%