Adam Warski will be giving a talk at Lambda Days 2017. He will be speaking about free Algebra.
PurelyFunctional.tv: How did you get into Functional Programming?
Adam Warski: At the beginning of my first university year we could make a choice between taking "Introduction to programming" using an imperative language or a functional one. As I knew some Pascal and C at the time (or so I thought at least), I decided to take the mysteriously sounding functional path. That turned out to be a very good choice, I stuck with FP through the rest of my studies, first learning Scheme, then writing quite a lot of Ocaml.
Despite that backgroud, at the beginning of my professional career I was a Java developer, and remained in the "imperative land" for quite some time. But a couple of years ago I switched to Scala and FP came back to me that way.
PF.tv: What is your talk about?
AW: It's an experimental talk for me, as it contains quite a lot of maths, and not a lot of code. The talk introduces some concepts from Universal Algebra (if this sounds scary - it shouldn't - it's just a formalization of what we do every day), and using these tools proceeds to show how to construct a free algebra.
Free algebras is how I first got in touch with "free" constructions - also during my university days - hence the title, "Origins of free".
PF.tv: Who is your talk for?
AW: I think the talk should be interesting for anybody who is intruiged by why "Free Monads" are "Free" and what does this term mean in a broader sense.
PF.tv: What do you hope people will take away from the talk?
AW: My main goals are to provide a "constructive" intuition of what "Free" means, and show that it is a general construction, which can be applied to many different structures, not only monads.
Further, maybe the talk could help in demystifying the "Free Monad", which I think might sound a bit scary (if not, even better!), while in fact it is a simple data structure, with very straightforward operations. I think people might sometimes look for a "deeper meaning" which just isn't there.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
AW: While not necessary, it would be useful if people have seen some free monad code examples before, along with some motivation on why you would want to use free monads in the first place. I don't spend a lot of time introducing free monads in the talk (as that would be a spearate talk).
But then, it's not a must, hopefully you can also apply the intuititions I'll try to show if you only learn about free monads after the talk.
PF.tv: What resources are available for people who want to study up before the talk?
AW: There's plenty of materials available, both for Haskell and Scala (and other languages probably too). Simply googling "free monad [your language]" should give you a great starting point.
PF.tv: Where can people follow you online?
AW: I'm occasionally tweeting. I also contribute to or lead some open-source projects (see softwaremill.com/open-source).
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
AW: Well, all of my open-source ones, of course! 😉 But other than that, just getting involved in whatever is your interest is probably the best idea.
PF.tv: Where do you see the state of functional programming in 10 years?
AW: As I think the functional approach really helps in improving code quality, and in effect the overall quality of software systems, I hope FP will become much more mainstream than it is today. However, I think there's still a lot of place for evolution and finding a "middle ground" approach. FP isn't the answer to everything, in many cases the "best solution" would probably be a combination of functional / object-oriented / imperative / etc. techniques. That's also why I think Scala is a such an interesting language - it combines the paradigms mentioned above in a unique way.
PF.tv: If functional programming were a superhero, what superpower would it have?
AW: Being able to describe what it will do and how will it change the world with extreme precision, without actually doing anything.