Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mo'Problems, Mo'Nads

Kyle Simpson
November 08, 2020

Mo'Problems, Mo'Nads

Monads; just that word alone probably either made you shudder or roll your eyes. But don't run away!

Functional Programming (FP) offers many benefits to our programs, even in a loose/flexible language like JS. But we often avoid them just because of intimidating terminology, notation, and math theory. Rarely is this more prevalent than with monads.

This talk is not a dissertation on monads and broader category theory. We're merely dipping our toe into the shallow end here, not plunging head first into the deep end. But I hope maybe it entices you to swim around, because the water's actually quite pleasant!

We'll look at familiar problems in code that we typically solve imperatively, and then see how some of the de-mystified behaviors associated with monads (and friends!) can help. After this talk, I hope you'll look more closely at monads and other algebraic structures.

Topics illustrated: selecting values with conditional logic, forking behavior on exceptions, and juggling asynchronous side effects.

Kyle Simpson

November 08, 2020
Tweet

More Decks by Kyle Simpson

Other Decks in Programming

Transcript

  1. "Some people, when confronted with a problem, think 'I know,

    I'll use regular expressions.' Now they have two problems." -- Jamie Zawinski
  2. Monads unit(a) >>= λx → f(x) ↔ f(a) ma >>=

    λx → unit(x) ↔ ma ma >>= λx → (f(x) >>= λy → g(y)) ↔ (ma >>= λx → f(x)) >>= λy → g(y)
  3. 1. choose a value or fallback? 2. gracefully handle exceptions?

    3. manage side effects? how could I...