70 %
Chris Biscardi

The Haskell Programming Language

  1. Your first Haskell Program
  2. stack vs cabal
  3. hackage vs stackage
  4. base vs preludes
  5. tuples
  6. lists
  7. Text, ByteString, and String
  8. Maybe and Either (Maybe is Either)
  9. map vs fmap
  10. prefix, infix, and making one the other
  11. type vs newtype vs data
  12. classes and instances
  13. Using pragmas (-XOverloadedStrings, etc)


  • starting ghci
  • importing modules (:m)
  • checking types (:t)
  • Control.Applicative
  • zipping and unzipping lists


  • fold, scan
  • Foldable


  • Functor
  • Foldable
  • Traversable



Bananas, Lenses,. Envelopes and Barbed Wire

recursion schemes

  • hylo/cata/etc morphisms


  • Phantom Types
  • ADTs/GADTs
  • Parser Combinators

Cool Haskell Programs

  • Semantic
    • Parsing, analyzing, and comparing source code across many languages
  • Pandoc
    • a universal document converter
  • Hasura
    • Blazing fast, instant realtime GraphQL APIs on Postgres with fine grained access control, also trigger webhooks on database events.
  • Clash
    • A modern, functional, hardware description language

Useful Tools

  • Hoogle
    • Hoogle is a Haskell API search engine, which allows you to search the Haskell libraries on Stackage by either function name, or by approximate type signature.
  • Hayoo
    • Hayoo: The Hayoo! search engine for Haskell API search on hackage
  • Hackage and Stackage
  • Haskell reverse dependency package search
    • Find out if the hackage package you want to use is widely used or not