You are now reading the last of our 24 blog posts on functional programming. We hope you have enjoyed our functional advent calendar, and maybe even learned something new. We have tried to keep a balance between introductory and slightly more advanced posts to make sure most people can find something interesting to read. Believe me – this ain’t as easy as it sounds!

This last post is a bit different from the 23 previous ones. There will not be a single theme this time. Instead, we have collected some of the presentations on functional programming that we have enjoyed the most, and remember the best. They have different themes, but are all enjoyable and enlightning. You might have seen some of them before, but hopefully you’ll find at least one you haven’t.

Happy holidays, thanks for joining us, and enjoy the talks!

Simple Made Easy – Rich Hickey

Link: infoq.com/presentations/Simple-Made-Easy

Length: 60 minutes

Rich Hickey emphasizes simplicity’s virtues over easiness’, showing that while many choose easiness they may end up with complexity, and the better way is to choose easiness along the simplicity path.

Propositions as Types – Philip Wadler

Link: youtu.be/IOiZatlZtGU

Length: 40 minutes

The principle of Propositions as Types links logic to computation. At first sight it appears to be a simple coincidence---almost a pun---but it turns out to be remarkably robust, inspiring the design of theorem provers and programming languages, and continuing to influence the forefronts of computing. Propositions as Types has many names and many origins, and is a notion with depth, breadth, and mystery. Learn why functional programming is (and is not) the universal programming language.

Functional Principles for Object Oriented developers – Jessica Kerr

Link: infoq.com/presentations/fp-principles-oop

Length: 60 minutes

How is an expert OO developer to improve on their craft? By learning from other paradigms! These six principles of the functional style also apply to OO. Some are part of good practice already; some express patterns both old and new; all give us different ways of thinking about problems. For developers without expertise in functional programming, examples in Java and C# provide new techniques for writing clear, quality code.

Parsing lexical ambiguity with Elm and expressive types – Emma Tsujimoto Cunningham

Link: youtu.be/sLh-7E-iOto

Length: 20 minutes

Parsing lexical ambiguity in natural language has always been a tricky endeavor, both from the perspective of formal linguistics as well as natural language processing. In this talk, we'll consider one of the canonical examples from linguistics, the "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo." sentence from Dmitri Borgmann's 1967 "Beyond Language: Adventures in Word and Thought."

The Power of Composition – Scott Wlaschin

Link: vimeo.com/254635723

Length: 60 minutes

Composition is a fundamental principle of functional programming, but how is it different from an object-oriented approach, and how do you use it in practice? In this talk for beginners, we'll start by going over the basic concepts of functional programming, and then look at some different ways that composition can be used to build large things from small things. After that, we'll see how composition is used in practice, beginning with a simple FizzBuzz example, and ending with a complete (object-free!) web application.

Why Isn't Functional Programming the Norm? – Richard Feldman

Link: youtu.be/QyJZzq0v7Z4

Length: 25 minutes

Richard Feldman explores the reason why functional programming hasn’t taken over despite its advantages.

Functional Composition – Chris Ford

Link: youtu.be/jyNqHsN3pEc

Length: 40 minutes

Chris Ford demonstrates that music theory can be delightfully represented as code. He shows how to make music starting with the basic building block of sound, the sine wave, and gradually accumulates abstractions culminating in a canon by Johann Sebastian Bach. Examples will be live-coded in Clojure.

Communicating in Types – Kris Jenkins

Link: youtu.be/R2afqbzWDiU

Length: 40 minutes