Applied Haskell Workshop

schedule Nov 13th 10:00 AM - 06:00 PM place Meeting Room 2 people 29 Interested add_circle_outline Notify

This full day workshop will focus on applying Haskell to normal, everyday programming. We'll be focusing on getting comfortable with common tasks, libraries, and paradigms, including:

  • Understanding strictness, laziness, and evaluation
  • Data structures
  • Structuring applications
  • Concurrency and mutability
  • Library recommendations

By the end of the workshop, you should feel confident in working on production Haskell codebases. While we obviously cannot cover all topics in Haskell in one day, the goal is to empower attendees with sufficient knowledge to continue developing their Haskell skillset through writing real applications.


Outline/Structure of the Workshop

  • Tooling intro
  • Strictness/laziness/evaluation
  • Data structures
    • String types
    • Containers
    • Vector
  • Concurrency
    • Mutable variables
    • STM
    • async

If there is additional time, we can also cover, at the attendees' preference:

  • Exceptions
  • Streaming data
  • HTTP client/server
  • rio

Learning Outcome

The ability to write real world, professional Haskell code.

Target Audience

Attendees who are comfortable with the basics of Haskell, and want to learn how to apply what they already know to real-life projects.

Prerequisites for Attendees

This session will not teach you the basics of Haskell. Instead, we will be starting from the assumption of:

  • Comfort with basic Haskell syntax
  • Understanding of ADTs and pattern matching
  • Understanding of functions, lambdas, partial function application, and currying
  • Understanding of basic Haskell typeclasses, including: Functor, Applicative, Monad, Monoid, Foldable, and Traversable

The recommended approach for learning these topics is Haskell Programming from First Principles.

To prepare for the workshop, please ensure you have Stack and GHC set up on your machine:

  1. Download and install Stack. Instructions are available online. Make sure you have at least version 1.9.

  2. We're going to be using LTS 12.21. You may as well install an unnecessarily broad number of packages right off the bat: stack build --resolver lts-12.21 classy-prelude-yesod lens rio yesod-test foldl microlens-platform wai-conduit hspec

    • You may also find it convenient to run stack config set resolver lts-12.21 from outside of a project to set your global resolver to match.
  3. Make sure you can run the script below successfully. Save it to a file ending with .hs and then run stack filename.hs. On non-Windows systems, you can also do chmod +x filename.hs && ./filename.hs

#!/usr/bin/env stack
-- stack --resolver lts-12.21 script
main = putStrLn "Hello World!"

It's worth reviewing the prereading checklist from my Applied Haskell course, available at:

schedule Submitted 3 months ago

Public Feedback

comment Suggest improvements to the Speaker