This Is Not a Monad Tutorial by John Azariah
Func Prog Sweden Func Prog Sweden
19K subscribers
1,514 views
36

 Published On Dec 7, 2022

As a new functional programmer, I struggled with a lot of new terminology, intimidating mathematics, strange concepts – and virtually every discussion I had made me feel like my 2 decades of experience as a professional software engineer hadn’t prepared me for FP.

Now, after many years of working with FP in the industry, and having brought many people along the journey, I have some learnings about how to communicate some foundations of functional programming to professional software engineers – starting with why functional programming matters, how to get started, how to be effective, and how to improve over time.

So, we’ll talk about that today. We’ll explore how functional programming comes naturally with a few different perspectives and a few fundamental concepts, and hopefully look at programming in a new light. There will be a little mathematical notation, but nothing that should leave a professional software engineer stymied!

John Azariah Principal SDE, Microsoft
John is a frequent speaker at conferences on various topics of expertise including Quantum Computing, Functional Programming, Cloud Computing, and Software Engineering. He has over three decades of experience in writing software, designing software systems, and leading teams to deliver software products, services and platforms all over the world. He currently works for Microsoft in Australia for the AKS team, and was previously on the Microsoft Quantum team, where he was one of the designers of the Q# programming language.
  / johnaz  
  / johnazariah  

Video sponsor – Ada Beat
https://adabeat.com/

If you want to spread functional programming and support the channel, buy something from the shop: https://funcprogsweden.myspreadshop.net/

The chapters:
00:00 Welcome John
01:01 Introduction of John and start of presentation “This is not a monad tutorial”
03:50 What “good” looks like, example of error handling in Go
07:39 Wrapper types to the rescue
08:59 Use wrapped values
09:29 Scorecard (Clutter is removed, Caller cannot cheat error checking)
09:50 Allow controlled access
11:25 Scorecard (Error checking done, Clutter is removed, Caller cannot cheat error checking)
11:33 Chaining calls, example with C#
15:31 Scorecard (Caller can pass values to next function, Error checking done, Clutter is removed, Caller cannot cheat error checking)
16:08 Adding syntactic sugar, example with F# computation expression and C# Linq Syntax
21:50 Scorecard for C# and F# (Code is easy to read, Caller can pass values to next function, Error checking done, Clutter is removed, Caller cannot cheat error checking)
22:52 Discussion: Problem statement
24:34 Discussion: Our approach
27:52 Discussion: Why language matters (Haskell, Scala, C# with Linq, F# and Go)
36:22 Insight: The FP perspective
39:40 Questions

#funcprogsweden

show more

Share/Embed