PurelyFunctional.tv: How did you get into functional programming?
Chris Birchall: I did a course in FP using Standard ML at university, but at the time I didn't see what all the fuss was about. I graduated, became a Java developer, then rediscovered FP about a decade later. This time around, with some programming experience under my belt, I had a better understanding of what FP had to offer. I tried to write functional Java using libraries such as Guava, but it was very boilerplate-y and I was frustrated by Java's type system. I started looking around for alternative languages, found Scala, and fell in love with it.
PF.tv: Very briefly, what is your talk about?
CB: It's a kind of code review of an app I wrote recently for work. First I'll highlight some things that I like about the code and try to distill those into a few guidelines for people to follow. Then I'll discuss a couple of experimental refactorings that I did to try to make the code more functional. Specifically I'll look at introducing the Reader monad and Free monad into the codebase.
PF.tv: What do you hope people will take away from the talk?
CB: Firstly, there will be some practical advice for writing functional code in Scala, which I hope people will follow. Second, I hope the examples of introducing Reader and Free are useful. I see a lot of talks and blog posts use toy examples to introduce these concepts, but it's harder to find examples of them integrated into real applications.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
CB: The talk is aimed at Scala beginners, but I will assume that people can at least understand Scala syntax and core concepts such as objects, classes and traits.
It's also worth having at least a vague understanding of the Reader and Free monads, although I won't go into massive technical detail.
PF.tv: What resources are available for people who want to study up before the talk?
CB: There are plenty of resources online to learn about Reader and Free, e.g.
PF.tv: Where can people follow you online?
CB: @cbirchall on Twitter
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
CB: I'm kind of between projects right now, like an ageing rock star. Recently I've been contributing a bit to some the Typelevel.org projects, e.g. circe and Monocle.
PF.tv: Where do you see the state of functional programming in 10 years?
CB: I think the rise of FP is unstoppable now. It's already influencing mainstream languages, e.g. with the introduction of lambdas into Java. In 10 years my guess is that the dominant software methodology will be a form of domain-driven design using a hybrid of FP and OOP (so-called "functions in the small, objects in the large").
PF.tv: If functional programming were a superhero, what superpower would it have?
CB: The power of zygohistomorphic prepromorphism!