Explore existential types and their encoding in Scala in this Scala Days Copenhagen 2017 conference talk. Dive into the world of abstraction in programming languages, focusing on how existential types allow developers to write programs that rely on other programs with unknown implementation details. Learn about the challenges of manipulating and combining these abstractions correctly and usefully. Discover concrete use cases demonstrating what existential types can and cannot do, and compare them to other modularization alternatives like basic inheritance and typeclasses. Examine the Scala square of abstraction, covering value parameters, abstract value members, and their differences. Investigate practical applications in encapsulation, component design, and type families. Explore alternative encodings for language definition and evaluation interpreters, including the finally tagless encoding. Gain insights into the trade-offs between type parameters and type members. No theoretical background is required for this informative session on improving object-oriented programming with existential types.
Read more