Making Sense of Monads

There are probably a thousand blog posts, articles, and videos out there trying to teach what monads are. Some are too simple to really tell you what's going on ("A monad is like a burrito!"). Some are too complicated for anyone who isn't already well versed in abstract math ("A monad is a monoid is the category of endofunctors!").

All of them try to pass on some of the fundamental knowledge. But virtually none of them provide you with the tools you really need to use monads in your own code. For that, you need practical experience that involves writing the code yourself.

Our Making Sense of Monads course is designed to provide just that. In this course, you'll learn:

  1. Fundamental knowledge about simpler abstract structures that will help you understand monads
  2. How to understand monadic syntax in Haskell
  3. How to use all of the most common monads in Haskell

And best of all, you'll get a chance to practice your skills with programming exercises, and some project-based code.

If you think this sounds like the tool you need to finally understand monads, head to the course page to get started!

If you'd like to learn more about what you can expect from the course, keep reading!

Course Content and Outline

The course content consists of 3 elements:

  1. Video Lectures
  2. Screencast Videos
  3. Programming Exercises

In video lectures, your teacher will introduce the core concepts of the lesson, including an in-depth breakdown of the code you need to implement the feature.

Screencast videos will show these concepts in action, in an IDE, so you can follow along.

Finally, you'll then get the chance to try the concepts for yourself with our detailed programming exercises. These exercises are the most important part of the course! By writing the code and applying the concepts yourself, you'll build up the confidence to use these ideas in your own projects.

This short course consists of roughly three different parts. Here are the different areas you'll cover:

Functional Structures

This course starts with an overview of basic functional structures. Monads are a bit tricky to understand as an abstract structure. So we'll start with simpler structures like functors and monoids. We'll learn about their typeclass representations and how different structures can have "laws" associated with them.

Monads

The core material of this course is, naturally, learning how to use monads. We'll discuss "What is a Monad", as well as the easiest way to understand monadic syntax. You'll also learn about the most commonly used monads in Haskell and how to combine them together!

Parsing Projects

The course concludes with two mini-projects centered around parsing. Parsing is a fundamentally stateful (and thus monadic) activity, so it will give you some great practice for your new skills! You'll learn the ins and outs of the Megaparsec library, and get the chance to write a basic JSON parser as well as a parser for a more complicated language format.

FAQ

How are course materials delivered?

The course has a .zip file that you can download, containing a buildable Haskell project. You can also sign up for the private GitHub repository that you can clone or fork so that you can get updates more easily.

How long can I access course material?

Purchasing this course grants lifetime access to the material. If you don't have time to go through it now, you can always leave it for later!

What if I get stuck on something?

You'll be able to email the instructor for help. You'll also be able to download a separate .zip file (or fetch a separate Git branch) that has all the answers for each exercise.

What if I don't like the course?

This course comes with a 14-day refund guarantee. If you don't like the course, you can get a full refund within 14 days, no questions asked.

If you have any more questions, you can send an email to james@mondaymorninghaskell.me! Once you're ready to buy, head to the course page.