Letting Go Of Data Encapsulation: Unlocking New Possibilities
Data encapsulation, or data hiding, empowers programmers by simplifying interfaces, but how does it affect our ability to compose correct programs? Many type systems support general types such as Ints or Strings, but recently more type systems have added support for literal types such as 42 or "Hello world!". Alongside literal types, Scala also supports singleton types such as myInt.type and myString.type. Utilizing such narrowed types instead of the more commonplace widened types enables a world of possibilities for compile-time verification.
Come to this talk and find out how embracing these narrowed types can unlock new possibilities for compile-time verification in your programs.