Overview
Syllabus
Intro
Outline
Complexity
Modularization and generalization
1.2 Square of abstraction
Scala square of abstraction (1)
Value parameters
Scala square of abstraction (2)
Abstract value members
Scala square of abstraction (3)
Parameters vs abstract members
Scala square of abstraction (4)
Scala square of abstraction (5)
Use cases
2.1 Encapsulation
Scala interface for nix files API
Hiding the File type
Why is it different from using an opaque type?
Encapsulation - summary
User interface Component
Counter component
Container component
Redesign Component with abstract type members
Tabs - view implementation
Modularization - summary
Naive solution - XYPlot
Solution with abstract type members
Type families - summary
Questions?
Evaluating programs
Generalizing interpreters
Alternative encoding: language definition
Alternative encoding: evaluation interpreter
Alternative encoding: interpreting programs
Finally tagless encoding - extensibility
Type parameters vs type members (1)
Finally tagless encoding - summary
Tabs component implementation
Taught by
Scala Days Conferences