Dave Kimber

Senior Software Engineer at Riverford Organic Farmers

I've been working almost exclusively in Clojure since I left the world of Java 8 years ago. Since then I've been solving enterprise problems with functional programming in the dynamic and interactive environment afforded by Lisps. I couldn't be happier.

I've worked across many sectors, from banking, energy and transport to film, education and (most recently) organic vegetable farming! It's remarkable how much of the job is the same every time. There's always a legacy system to replace and no one is ever completely happy with how their system sends emails to customers.

In my spare time I like writing tiny Lisps, competing in game jams, and playing DnD with my partner and our friends.

OBJECTIVES

The audience will come away with:
- A comprehensive understanding of the inner workings of the Y Combinator
- An intuitive understanding of the Y Combinator at a high level
- Working examples of how to solve recursive problems using the Y Combinator

AUDIENCE

This talk should appeal to people who:
- have never heard of the Y Combinator before
- have heard of it but have not looked into it
- have looked into it and found it tough to figure out
- understand it well and want to feel smart about themselves?

An understanding of functional programming is assumed. Experience with (or expose to) Clojure or other Lisps is helpful, but not required.

DESCRIPTION

The Y Combinator is an elegant construct of the Lambda Calculus used to implement recursion.

Unfortunately, it's so elegant, so abstract, and so succinctly expressed that it's quite difficult to understand how it works.

In this talk, I will be guiding you through developing an intuition for its inner workings, looking at its practical applications, and hopefully shedding some light on why it is so beautiful.

Working in Clojure and using some snazzy animations we will be looking into how the Y Combinator is evaluated into a dynamically generating infinite stack of function calls and how these then resolve into solutions to recursive problems.


←Back