Introduction to Haskell III by Matthew Brecknell
While completing HW 2, you probably spent a lot of time writing explicitly recursive functions. At this point, you might think that’s what Haskell programmers spend most of their time doing. In fact, experienced Haskell programmers hardly ever write recursive functions!
How is this possible? The key is to notice that although recursive functions can theoretically do pretty much anything, in practice there are certain common patterns that come up over and over again. By abstracting out these patterns into library functions, programmers can leave the low-level details of actually doing recursion to these functions, and think about problems at a higher level—that’s the goal of wholemeal programming.
This lecture will cover these recursive patterns, the haskell abstractions that make them possible and where to find these library functions in the prelude. We'll also take a tangent into the different between total and partial functions and why you should care about the difference.
Free monads are good for you by David Laing
This talk will begin with a pragmatic introduction to free monads, covering how to create them, how to make use of them, and why they're useful.
The rest of the talk will cover how and why they work, along with some useful related ideas. This will be interspersed with shallow but energetic dives into the more theoretical parts of Haskell, to help build intuition for what is going on behind the scenes.
The theoretical sidebars aren't just to dazzle, delight and amaze - they will also help to show how a handful of theoretical concepts can be combined into something of incredible practical use.