Главная
Study mode:
on
1
Intro
2
Outline
3
Complexity
4
Modularization and generalization
5
1.2 Square of abstraction
6
Scala square of abstraction (1)
7
Value parameters
8
Scala square of abstraction (2)
9
Abstract value members
10
Scala square of abstraction (3)
11
Parameters vs abstract members
12
Scala square of abstraction (4)
13
Scala square of abstraction (5)
14
Use cases
15
2.1 Encapsulation
16
Scala interface for nix files API
17
Hiding the File type
18
Why is it different from using an opaque type?
19
Encapsulation - summary
20
User interface Component
21
Counter component
22
Container component
23
Redesign Component with abstract type members
24
Tabs - view implementation
25
Modularization - summary
26
Naive solution - XYPlot
27
Solution with abstract type members
28
Type families - summary
29
Questions?
30
Evaluating programs
31
Generalizing interpreters
32
Alternative encoding: language definition
33
Alternative encoding: evaluation interpreter
34
Alternative encoding: interpreting programs
35
Finally tagless encoding - extensibility
36
Type parameters vs type members (1)
37
Finally tagless encoding - summary
38
Tabs component implementation
Description:
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

Existential Types - Make OOP Great Again

Scala Days Conferences
Add to list