As an advocate of functional programming, I’m regularly asked “I’ve tried to learn functional programming a number of times, but how do I apply this to my everyday work?”. One of the hardest parts about learning a new technical skill or concept can be finding ways to apply those skills in our daily practice, especially when constrained by time or money to achieve a specific goal. Sometimes, one of the best ways to learn is to break away from what we’re used to and learn in a totally new environment, the better to bring those new experiences and ideas back to the environments we’re used to once we return. In this workshop, we’ll start by exploring two functional programming languages that these days are relegated largely to academic study, highlighting the influences they’ve had on modern functional programming paradigms and reinforcing these ideas with exercises to be solved as a group along the way. First, we’ll cover ML, a language whose ideology remains largely unchanged for over 40 years and considered the common ancestor of modern functional languages like Haskell, OCaml and F#. Next, we’ll cover Racket, a LISP derived from Scheme which shares similarities and probably inspiration with a number of currently popular languages, perhaps most obviously, Clojure and perhaps less obviously, Javascript. Lastly, we’re back to where you work: I’ll present exercises that help to reinforce the ideas learned from ML and Racket to be solved either in the language of your choosing, or Javascript (the de facto language of examples and solutions du jour). Join me for an enlightening foray into some languages largely forgotten or ignored by the industry that are certain to help you bring new ideas about functional programming to your daily practice, whatever it may be.