I’m a software engineer writing Scala code for 5 years. I am currently working at Fabernovel (formerly Zengularity). In my day to day job, I help building reactive web applications using Scala. My main points of interest are lambda calculus and type theory. I’m also co-organizing the Paris Scala User Group (PSUG), a meetup dedicated to Scala in Paris (France).
Polymorphism: Wait until you see my TRUE power!
Polymorphism is a feature shared by most of the statically typed programming languages we know. Scala has a rich and expressive type system. And one of the distinctive characteristics of it is to combine the forms of polymorphism from the functional paradigm (generics, typeclass) and those from the object oriented (subtyping). Although often opposed, they each have many advantages and they can work well together to gain incredible expressiveness. In this talk we will focus on advanced forms of quantification and on the mix of quantification with subtyping.
In the preamble of this talk we will recall very quickly some basic elements of polymorphism: parametric polymorphism, subtyping, existential quantification. Then, we will see how inclusion can be mixed with parametric polymorphism, which give us bounded quantification (F-bound polymorphism). We will also explore other kind of quantification, especially on Kind (Kind polymorphism). Finally we will explore alternative to bounded quantification without relying on subtyping (Row polymorphism).
If you are a beginner in Scala and you want to assimilate different forms of polymorphism offered by Scala that make the best of both worlds (OOP and FP), this talk is for you. You will be able to grasp all the intuitions.